Sequelize 및 CLI

장봄·2020년 7월 28일
0

code-states_IM_8주차

목록 보기
2/4

1. Sequelize 설치

먼저 Sequelize과 mysql2라이브러리를 설치한다.

  • Sequelize 설치 : $ npm install --save sequelize

  • Sequelize CLI 설치 : $ npm install --save-dev sequelize-cli

cli를 통해 ORM을 잘 사용할 수 있도록 bootstraping(프로젝트 초기 단계를 자동으로 설정할 수 있도록 도와주는 일)을 해줘야 한다.

  • bootstraping : $ npx sequelize-cli init

bootstraping을 하면 아래의 폴더가 자동으로 생성된다.

config/config.json
models/
migrations/
seeders/

테이블을 생성할 데이터베이스를 미리 만들어 준다.

이제 cli설정을 해준다. config폴더의 config.json을 설정해준다.

기본적으로 development, test, production 환경중 development로 설정이 되어 있다.

{
  "development": {
    "username": "root",
    "password": null,
    "database": "database_development",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "test": {
    "username": "root",
    "password": null,
    "database": "database_test",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "production": {
    "username": "root",
    "password": null,
    "database": "database_production",
    "host": "127.0.0.1",
    "dialect": "mysql"
  }
}

설정환경은 코드하는 환경에 따라 변경을 해줄 수 있다. 설정파일은 중요한 개인정보가 들어있어서 gitignore에 등록을 해줘야한다. 설정파일을 git의 관리를 받게하는 대신 환경변수로 사용하는 방법이 있다. dotenv를 다운받아서 사용을 하면 가능하다. (자세한 내용은 이 블로그를 참고)

2. Creating the first Model (and Migration)

모델은 스키마와 비슷하다. 모델생성은 터미널을 이용해서 코드로 만든다.

모델 정의 : $ npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string

User라는 이름의 모델을 정의하고 모델의 속성을 작성한다. 타입은 문자열인 경우 string, 숫자인 경우 integer등이 있다. 속성의 다른 정보는 여기서 확인이 가능하다.

이 작업을 하면 models폴더에 users라는 폴더가 자동으로 생성된다. 그리고 migrations폴더에도 생성날짜가 파일명인 파일이 생성된다. 여기까지는 아직 모델을 생성한 것은 아니다. 생성하기 전 모델을 정의만 한것이다. 여기서 migrations 디렉터리에 있는 create-user.js 파일을 보면 up과 down으로 구분되어 각각 createTable과 dropTable을 해주는 코드를 볼 수 있다.

정의된 모델을 생성하는 것을 마이그레이션이라고 부른다.

마이그레이션 : $ npx sequelize-cli db:migrate

마이그레이션 취소 : $ npx sequelize-cli db:migrate:undo

마이그레이션을 하고 생성된 모델안에 데이터를 추가해야하는데 Creating the first Seed : 를 이용해서 추가할 수 있다.

Seed 생성 : $ npx sequelize-cli seed:generate --name demo-user

seeders 디렉터리에 파일이 생긴것을 볼 수 있다. 파일을 확인해보면 마이그레이션 파일과 같은 포맷으로 up과 down으로 구분이 되어있는것을 확인 할 수 있다. 시드를 할때는 up에 있는 코드가 실행되고 시드를 취소할때는 down에 있는 코드가 실행된다.

예를들어 아래와 같이 코드를 작성해준다.

module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.bulkInsert('Users', [{
      firstName: 'John',
      lastName: 'Doe',
      email: 'example@example.com',
      createdAt: new Date(),
      updatedAt: new Date()
    }]);
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.bulkDelete('Users', null, {});
  }
};

Seed 실행 : $ npx sequelize-cli db:seed:all

Seed 삭제 : $ npx sequelize-cli db:seed:undo

테이블에 데이터가 생성된 것을 확인 할 수 있다.

공식문서를 보고 작성했습니다.

profile
즐겁게 배우고 꾸준히 블로깅하는 개발자입니다 ;>

0개의 댓글