본문 바로가기

NODE/node.js

Nodejs_Day 07 :: RDBMS 란 ? MySQL 메소드와 연결방법

RDBMS 의 사용

MySQL 다운로드

 

dev.mysql.com/downloads/

 

MySQL :: MySQL Community Downloads

The world's most popular open source database

dev.mysql.com

 

MySQL Community Server 클릭 > go to download page 클릭 > 용량 더 큰걸로 다운 > No thanks, just start my download 클릭

 

mysql 사용하려면 mariaDB 중지시킨다.

중지시키는 법 : 검색 > 서비스 > M 눌러서 mariaDB 중지버튼 활성화된거 꺼주기
응용프로그램 눌러서 EXCUTE 누르기

(MySQL Community Server 버전)

 

 

 

--------------------- 

MySQL 모듈

--------------------- 

 

커넥션 풀을 사용해 연결합니다.

데이터베이스 연결 객체가 너무 많이 만들어지는 것을 막고, 한번 만든 연결을 재사용 할 수 있게 합니다.

데이터베이스에 객체를 많이 연결하면 메모리 리소스를 많이 차지하므로 한번 만든 객체를 커넥션 풀에 넣어두고 다음번 요청이 있을 때 재사용 합니다.

 

설치툴에서 Authentication method 에서 두 번째 체크란에 체크하고 Next > 비밀번호는 아무거나 4글자로

 

---------------------
MYSQL연결설정
---------------------

 

connectionLimit : 커넥션 풀에서 만들 수 있는 최대 연결 개수를 설정합니다.

한 번 단말성으로 붙였다 뗏다 한다. 연결 객체를 여러개 만들어서 통신하게 한다.

사용자가 많을 경우 연결 객체를 넘어 갈 수 있는데 그럼 대기를 한다.

그래서 조금 느려진다 (메모리 낭비 할 수 있음)

 

Host : 연결 할 호스트 이름을 설정합니다.

Port : 데이터베이스가 사용하는 포트번호를 설정합니다.

User : 데이터베이스 사용자 아이디를 설정합니다.

Password : 데이터베이스 사용자 비밀번호를 설정합니다.

Datebase : 데이터베이스 이름을 설정합니다.

Debug : 데이터베이스 처리과정을 로그로 남길 지 여부를 설정합니다.

 

 

let 커넥션 풀객체 = mysql.createPool ({

     설정 옵션

      . . . 

)}

 

 

--------------------------- 
 패스포트(passport)모듈
---------------------------

 

노드에서 사용할 수 있는 사용자 인증 모듈입니다.

사용방법이 간단 할 뿐 아니라 사용자 인증 기능을 독립 된 모듈 안에서 진행 할 수 있도록 도와줍니다.

특히, express 를 사용할 경우 미들웨어로 사용할 수 있어서 간단한 설정만으로 로그인 기능을 만들 수 있습니다.

passport안에서 세션관리를 해줍니다. 다양한 SNS 관리도 도와줍니다 (구글/트위터/페북 등등)

한 마디로 로그인 연동해주는 기능입니다.

 

클라이언트     인증 요청     서버 SERVER
로컬 계정 ----------------> PassPort 모듈
페이스북  <---------------- (세션 관리)
구글          세션 저장
네이버
등등

 

static() : 모델 객체에서 사용할 수 있는 함수를 등록합니다.

함수의 이름과 함수 객체를 파라미터로 전달합니다.

 

method() : 모델 인스턴스 객체에서 사용 할 수 있는 함수를 등록합니다.

함수의 이름과 함수 객체를 파라미터로 전달합니다.

 

---------------------------

passport 의 메소드

---------------------------

 

 

serializeUser() : 사용자가 인증 성공 시 사용자 정보를 이용하여 세션을 만듭니다.

deserializeUser() : 사용자가 페이지 접근시 세션을 관리합니다.

 

로컬 계정 관리를 위한 LocalStrategy 객체

 

LocalStrategy({
    usernameField : 아이디(계정)필드, 
    passwordField : 비밀번호 필드,
    passReqToCallback :  Req 객체를 사용할지 여부 ( true or false)
}, (req객체, 아이디 필드, 비밀번호 필드,  콜백) => {

}