Sequelize란?

nodejs에서 mysql을 쉽게 다룰 수 있도록 도와주는 
ORM(Object-Relational Mapping)방식의 라이브러리로서 ORM은 객체와 관계형DB의 관계를 매핑해주는 도구입니다.
Sequelize를 사용하면 직접 쿼리를 날리지않고도 자바스크립트 코드로 mysql을 제어(DB테이블생성, select, insert, update, delete..) 할 수 있습니다.

 

 

 

Sequelize, mysql2, path 설치

Sequelize와 함께 기타 효율적인 작업을 위해 mysql2와 path도 함께 설치합니다.

 

mysql2

node.js환경에서 mysql을 사용하기 위한 편의성 및 효율성을 제공하는 API. 

javascript환경에서 발생하는 콜백과 관련한 복잡한 처리와 에러상황들을 편리하게 다룰 수 있도록 도와줍니다.

detail : www.npmjs.com/package/mysql2

 

path

파일 및 디렉토리경로를 다루는 작업시 유용성을 제공하는 모듈

 

npm install sequelize path mysql2
yarn add sequelize path mysql2

 

 

 

models디렉토리 추가

Sequelize를 적용하기 전에 DB에 추가할 테이블들의 정보를 서버에 전달하기위해 server 디렉토리 안에 'models' 디렉토리를 추가해줍니다.

 

models안에 추가할 js파일들은 서버와 연동되면서 DB테이블 역할을 하게됩니다.

 

 

 

db.js를 db.json으로 변경

네트워크상에서 데이터를 주고 받을 때 좀더 효율적인 성능을 위해 server/config안의 db.js를 json형식으로 바꿔줍니다.

 

{
    "development" : {
        "host" : "localhost",
        "username" : "react_test",
        "password" : "1111",
        "database" : "react_test",
        "dialect" : "mysql"
    }
}

 

 

 

models디렉토리에 index.js추가하여 db.json읽어오기

서버가 models디렉토리를 읽을 수 있도록 models폴더 안의 테이블js파일들을 연결, 관리해 줄 index.js를 추가해줍니다.

 

'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 = {};

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;

 

 

 

server.js와 Sequelize연동

server폴더에 있는 server.js의 기존 db연결코드를 모두 지우고 아래 코드를 넣어줍니다.

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

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

app.use(express.json());

const PORT = process.env.PORT || 4000;
app.listen(PORT, () => {
    console.log(`Server On : http://localhost:${PORT}/`);
})

 

 

 

server와 react를 재시작하여 연결확인

sequelize 연결 성공시 models/index.js안의 'Connection has been established successfully.' 문구가 콘솔창에 출력됩니다.

 

+ Recent posts