시퀄라이즈(Sequelize)(1) 기본 사용법

임쿠쿠·2020년 9월 29일
1

Sequelize

목록 보기
1/3
post-thumbnail

시퀄라이즈(Sequelize)란?

시퀄라이즈는 DB 작업을 쉽게 할 수 있도록 도와주는 라이브러리입니다. ORM(Object-relational Mapping)으로 분류되며, ORM은 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구입니다.

시퀄라이즈를 오로지 MySQL과 같이 써야만 하는 것은 아닙니다. MariaDB, MSSQL 등 다른 데이터베이스도 같이 쓸 수 있습니다. 문법이 어느 정도 호환되므로 프로젝트를 다른 SQL 데이터베이스로 전환 시 유용합니다.

시퀄라이즈를 쓰는 이유는 자바스크립트 구문을 알아서 SQL로 바꿔주기 때문입니다. 따라서 SQL 언어를 직접 사용하지 않아도 자바스크립트만으로 MySQL을 조작할 수 있습니다.

시퀄라이즈(Sequelize) 실습

시퀄라이즈에 필요한 sequelize와 sequelize-cli, mysql2 패키지를 설치 합니다.

npm i express morgan sequelize sequelize-cli mysql2

sequelize-cli는 시퀄라이즈 명령어를 실행하기 위한 패키지이고, mysql2는 MySQL과 시퀄라이즈를 이어주는 드라이버입니다.(mysql2 자체는 데이터베이스 프로그램이 아닙니다)

설치 완료 후 sequelize init 명령어로 호출합니다.

npx sequelize init

생성된 config, models 폴더에서 index.js 를 다음과 같이 수정합니다.

//models/index.js
const Sequelize = require('sequelize');

const env = process.env.NODE_ENV || 'development';
const config = require('../config/config')[env];
const db = {};

const sequelize = new Sequelize(config.database, config.username, config.password, config);

db.sequelize = sequelize;

module.exports = db;

Sequelize는 시퀄라이즈 패키지이자 생성자입니다. config/config.json에서 데이터베이스 설정을 불러온 후 new Sequelize를 통해 MySQL 연결 객체를 생성합니다. 또한 연결 객체를 나중에 재사용 하기 위해 db.sequelize에 넣어두었습니다.

MySQL 연결
이제 시퀄라이즈를 통해 익스프레스 앱과 MySQL을 연결해야 합니다. app.js를 생성하고 익스프레스와 시퀄라이즈 연결 코드를 작성합니다.

//app.js
const express = require('express');
const path = require('path');
const morgan = require('morgan');

const { sequelize } = require('./models');

const app = express();
app.set('port', process.env.PORT || 3000);

sequelize.sync({ force: false })
  .then(() => {
    console.log('데이터베이스 연결 성공');
  })
  .catch((err) => {
    console.error(err);
  });

app.use(morgan('dev'));
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));


app.listen(app.get('port'), () => {
  console.log(app.get('port'), '번 포트에서 대기 중');
});

앞에서 정의한 db.sequelize를 불러와서 sync 메서드를 사용해 서버 실행 시 MySQL과 연동되도록 했습니다. 내부에 force: false 옵션이 있는데, 이 옵션을 true로 설정하면 서버 실행 시마다 테이블을 재생성합니다. 테이블을 잘못 만든 경우에 true로 설정하면 됩니다.

MySQL과 연동 시 config 폴더 안의 config.json 정보가 사용됩니다. 다음과 같이 수정합니다.

//config/config.json
{
  "development": {
    "username": "유저네임",
    "password": "비밀번호",
    "database": "데이터베이스이름",
    "host": "호스트주소",
    "dialect": "mysql"
  },
 ....
  }
}

실행 후 콘솔창에 다음과 같이 뜨면 연결이 성공한 것입니다.

3000 번 포트에서 대기 중
데이터베이스 연결 성공

이상으로 Sequelize를 이용하여 MySQL과 연동해보았습니다. 다음 포스트에서는 Sequelize모델과 관계에 대해서 알아보겠습니다.

참조 : nodejs 교과서 - 조현영 지음

profile
Pay it forward

0개의 댓글