react와 express 서버 연동 익히기 4편 -sequelize를 이용한 DB와 서버 연동-

1. sequelize 설치

 

npm install sequelize path로 sequelize, path 설치

 

sequelize는 node.js 기반의 ORM

 

쿼리를 날려서 데이터베이스에 접근하는 것이 아니고 체계적이며 깔끔하고, 생산적으로 DB관리를 가능하게 해준다.

 

 

2. Models 폴더 생성

 

백엔드에 DB에 추가할 테이블들의 정보를 서버에 전달해주는 models 폴더 생성

 

 

 

여기에 작성하는 js 파일들은 마치 장고의 모델처럼 서버와 연동되면서 테이블 역할을 한다

 

서버가 이 modles 디렉토리를 읽기 위해 디렉토리의 테이블 js 파일들을 관리하고 연결하는 index.js 파일이 필요

 

models 안에 index.js 파일을 생성하고 코드 작성

 

'use strict';

const path = require('path');

const Sequelize = require('sequelize')

 

3. db.js를 json으로 변환

 

이전에 DB 정보를 config/db.js에서 가져왔다

 

하지만 js파일은 네트워크 상에서 데이터를 주고받을 때 효율적인 성능을 띄지 못한다.

 

그래서 데이터를 주고받을 때 텍스트 형식의 json 파일이 필요하다

 

config/db.js를 지우고 다음과 같이 config/db.json을 생성

 

여기서 dialect는 DB 종류를 뜻한다

 

 

4. json 파일 읽기

 

그리고 models/index.js에서 입력한 json 파일을 읽어준다

 

여기서 path 모듈에 여러 인자값 __dirname, .. , config, db.json이 들어가있는데,

 

..은 경로의 이동값으로 현 디렉토리의 밖에 있다

 

config는 현재 디렉토리 안에 있는 config로 들어가고

 

db.json은 config안의 db.json을 가져온다

 

'use strict';

const path = require('path');

const Sequelize = require('sequelize')

const env = process.env.NODE_ENV || 'development';
const config = require(path.join(__dirname, '..', 'config','db.json'))[
    env
]

const db = {};

 

이제 config 안에는 DB를 연결할 수 있는 정보들이 할당되어 있다

 

이 config 정보들을 sequelize와 연동한다.

 

다음 코드를 index.js에 추가 작성

 

let sequelize = new Sequelize(
    config.database,
    config.username,
    config.password,
    config,
    {
        define: {
            charset: 'utf8',
            collate: 'utf8_general_ci'
        }
    }
)

db.sequelize = sequelize;
db.Sequelize = Sequelize;

db.sequelize
.authenticate()
.then(() => {
    console.log('Connection has been established successfully.');
})
.catch(err => {
    console.log('Unable to connect to the database: ', err);
})

db.secret = '(9*)5$&!3%^0%^@@2$1!#5@2!4'

module.exports = db;

 

앞에서 DB의 정보를 할당한 config 변수를 이용해, sequelize에 DB의 정보를 할당하는 코드를 작성

 

위에서 db.sequelize.authenticate().then() ~~~ 코드를 보면..

 

연동이 성공하면 "connection has been established successfully"

 

실패하면, "unable to connect to the database:"

 

 

5. 서버와 sequelize 연동

 

server/server.js로 돌아가서, 기존의 DB코드는 삭제하고

 

다음 코드로 sequelize와 연결

 

const sequelize = require('./models').sequelize;가 중요?

 

const express = require('express')
const app = express();


const sequelize = require('./models').sequelize;
sequelize.sync();

app.use(express.json());

const PORT = process.env.PORT || 3001;

app.listen(PORT, () => {
    console.log(`Server On : http://localhost:${PORT}/`)
})

 

이제 시작해서 "Connection has been established successfully"가 나오면 성공

 

 

 

 

참조

 

 

React로 블로그 만들기 05 : RDS(Mysql) 연동 2-1 (Sequelize 연동하기) : 네이버 블로그 (naver.com)

 

React로 블로그 만들기 05 : RDS(Mysql) 연동 2-1 (Sequelize 연동하기)

'Sequelize'는 Node.js 기반의 ORM 입니다. 앞서 우리가 쿼리를 날려 데이터베이스에 접근...

blog.naver.com

 

 

TAGS.

Comments