ORM(Object-relational mapping)은 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다. SQL쿼리를 직접 작성하지 않고 메서드 호출로만으로도 데이터 조작이 가능하다. Django Framework에는 ORM이 내장되어 있었지만 이번에 학습해볼 Express Framework에는 그렇지 않기 때문에 Sequelize를 설치하여 사용하고자 한다. 개인적으로 Django ORM에는 익숙하기에 Sequelize를 학습하는데 별다른 어려움이 없었다.

설치


$ npm i sequelize

그리고 사용하고자 하는 DB를 설치한다. 사용하는 DB에 따라 모델링이 살짝 달라지니 공식문서를 참고한다.

$ npm i mysql2

다음으로 Sequelize 기능을 명령어로 사용해서 데이터베이스를 작업하기 위해 Sequelize Cli를 설치한다.

 $ npm i sequelize-cli

해당 Expresss 프로젝트에서 sequelize를 사용하기 위한 초기 세팅을한다.

$ sequelize init

sequelize 에서 사용할 수 있는 기능을 보기 위해

sequelize --help
명령:
  sequelize db:migrate                        Run pending migrations
  sequelize db:migrate:schema:timestamps:add  Update migration table to have
                                              timestamps
  sequelize db:migrate:status                 List the status of all migrations       
  sequelize db:migrate:undo                   Reverts a migration
  sequelize db:migrate:undo:all               Revert all migrations ran
  sequelize db:seed                           Run specified seeder
  sequelize db:seed:undo                      Deletes data from the database
  sequelize db:seed:all                       Run every seeder
  sequelize db:seed:undo:all                  Deletes data from the database
  sequelize db:create                         Create database specified by
                                              configuration
  sequelize db:drop                           Drop database specified by configuration  sequelize init                              Initializes project
  sequelize init:config                       Initializes configuration
  sequelize init:migrations                   Initializes migrations
  sequelize init:models                       Initializes models
  sequelize init:seeders                      Initializes seeders
  sequelize migration:generate                Generates a new migration file

스키마 생성


config폴더의 config.json에서 mysql에 접속하기 위한 유저정보를 입력한다. 그리고 생성할 스키마명을 기입한다.

"development": {
    "username": "root",
    "password": "root 암호",
    "database": "test",
$ sequelize db:create

test라는 스키마가 생성된다.

테이블 생성


models폴더에서 [테이블명].js 로 JS파일을 생성한다.

// post.js
module.exports = (squelize, DataTypes) => {
  return sequelize.define('post', {

  });
}

그리고 index.js에서 해당 모델을 불러온다.

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

db.Post = require('./post')(sequelize, Sequelize); // db에 Post 모델을 사용할 거야.

module.exports = db;

이제 생성한 데이터베이스를 사용하기 위해 서버 본체인 app.js에 등록한다. 항상 순서에 유의해서 작성한다.

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

sequelize.sync();

모델링


공식문서 - DataTypes

DataTypes

자주 사용하는 타입들

Sequelize.STRING(글자수)
Sequelize.TEXT
Sequelize.INTEGER
Sequelize.FLOAT
Sequelize.DATE
Sequelize.BOOLEAN

allowNull

NOT NULL 조건이다 default: false

unique

comment

column 설명을 위함

primaryKey

기본 키 여부 default: false