MVC Design Pattern - Sequelize

Verba volant, scripta manent·2021년 3월 3일
0

Sequelize란?

Postgres, MySQL, MariaDB, SQLite, Microsoft SQL Server를 지원하는 Promise 패턴 기반의 Node.js ORM이다.

Promise 패턴 기반

Promise 패턴은 JavaScript의 비동기 코드를 더 우아하게 만들어주며, 체이닝을 통해 콜백 지옥에서 탈출할 수 있고, 깔끔하게 예외처리를 할 수 있다.
async와 await를 이용해서 간편하게 비동기 제어도 가능.

ORM

자동으로 DBMS의 데이터를 객체 형태로 변환해줘서 더 객체 지향적인 코드를 생산할 수 있도록 도와주며 이를 통해 개발자는 데이터를 가지고 어떤 작업을 할지에 집중가능하다!
손쉽게 DBMS 변경 가능

설치방법

npm install sequelize // 시퀄라이즈 설치
npm install mysql2 // mysql2 설치
npm install -g sequelize-cli // sequelize-cli를 전역으로 설치한다.

위의 3종세트를 설치 한 후

sequelize init

터미널에 sequelize init 명령어를 사용하게 되면 config, models, migrations, seeders 폴더가 생성된다.

모델정의

1. 직접 작성하는 방법

모델을 정의하는 method는 define()이며,
sequelize.define('객체 이름', 스키마 정의, 테이블 설정)로 사용할 수 있다.

module.exports = (sequelize, DataTypes) => {
  return sequelize.define(
    "messages", // 테이블 이름
    {
      // 스키마 정의
      messageContent: {
        // column 이름
        type: DataTypes.STRING(500), // 데이터 타입 설정
        allowNull: false // null 허용 설정
      },
      userId: {
        type: DataTypes.INTEGER,
        allowNull: false
      },
      roomId: {
        type: DataTypes.INTEGER,
        allowNull: false
      }
    },
    {
      // 테이블 옵션
      timestamps: true,
      underscored: true,
      paranoid: true
    }
  );
};

테스트 하려면 sequelize.sync()를 작성하고 코드 실행 후 mysql에 접속하여 데이터테이블 생성 여부를 확인한다.

2. CLI로 만드는법(sequelize-cli)

터미널 창에서 명령어를 통해서도 테이블을 정의할 수 있다.

cli로 모델을 만드는 기본 문법

sequelize model:create --name TABLE_NAME  --attributes "COLUMN1:type, COLUMN2:type, COLUMN3:type"

유저의 모델을 만드는 방법

sequelize model:create --name user --attributes nickName: string, passWord: string

실행방법

옵션을 설정하기 위해서는 user.js 파일에 직접 들어가 설정을 해야한다.
그리고 설정을 적용시키기 위해서는 user table을 drop하고 다시 sequelize.sync()를 실행시켜 새로 생성해줘야 한다.
user.js 파일의 옵션을 수정했다면 migrations 폴더에 있는 user의 migrations 파일 또한 동일하게 수정해줘야 한다.
수정을 완료 했다면 아래의 명령어를 실행한다.

sequelize db:migrate

위의 명령어 까지 실행한다면 테이블이 정의된 부분이 migrate 된 것이다.

profile
말은 사라지지만 기록은 남는다

0개의 댓글