Sequelize의 Migration, Model
Sequelize의 구성은 migration, model 2가지로 구분
migration은 Sequelie CLI를 이용해 MySQL에 테이블을 생성하기 위해 사용
model은 특정 Table과 Column의 속성값을 입력하여, MySQL과 Express 프로젝트를 연결 (Mapping)
Posts 테이블을 나타내는 migration과 model 파일을 만들기
npx sequelize model:generate --name Posts --attributes title:string,content:string,password:string
마이그레이션을 이용해 테이블 생성하기
Sequelize는 Migrations에 설정된 정보를 바탕으로 MySQL의 테이블을 생성
npx sequelize db:migrate
- Sequelize CLI 간단하게 살펴보기!
- sequelize db:create
- config/config.json에 설정한 database를 생성합니다.
- sequelize db:drop
- config/config.json에 설정한 database를 DROP합니다.
- sequelize model:generate
- migration과 model을 생성합니다.
- 각 Column의 속성을 지정해줄 수 있습니다.
- sequelize db:migrate
- migrations 폴더에 있는 migration 파일을 이용해 MySQL의 테이블을 생성합니다.
- sequelize db:migrate:undo
- 가장 최근에 실행된 db:migration 명령을 되돌립니다.
- sequelize seed:generate
- seeder 폴더에 있는 seed 파일을 이용해 각 테이블에 데이터를 삽입합니다.
- sequelize db:create
migration 파일은 대표적으로 아래와 같은 설정을 사용합니다.
1. `allowNull`: `NULL` 값을 허용하는지 설정합니다.
- `true`일 경우 `NULL`을 허용하고, `false`일 경우 `NOT NULL` 타입이 됩니다
2. `autoIncrement`: `AUTO_INCREMENT`로 설정
- 데이터를 삽입할 때 해당 컬럼에 아무런 값을 입력하지 않더라도 1씩 증가하여 고유한 값을 유지합니다.
3. `primaryKey`: 기본키로 설정합니다.
4. `type`: 타입을 지정합니다.
- `STRING`, `INTEGER`, `DATE` 등 다양한 타입
5. `defaultValue`: 아무런 값이 입력되지 않았을 때, 기본값을 설정합니다.
- 대표적으로 `createdAt`, `updatedAt`에서 `NOW`를 설정해, 현재 시간을 자동 삽입
6. `unique`: 고유한 값만 들어올 수 있도록 설정
Sequelize의 Migration 설정하기
- **Posts 테이블 migration 요구사항**
- `postId`
- 기본키, `AUTO_INCREMENT`
- `NULL`은 허용하지 않음
- `INTEGER` 타입
- `title`
- `NULL`은 허용하지 않음
- `STRING` 타입
- `content`
- `NULL`은 허용하지 않음
- `STRING` 타입
- `password`
- `NULL`은 허용하지 않음
- `STRING` 타입
- `createdAt`
- `NULL`은 허용하지 않음
- `DATE` 타입
- 아무런 값을 입력하지 않았을 때, 현재 시간이 삽입됨
- `updatedAt`
- `NULL`은 허용하지 않음
- `DATE` 타입
- 아무런 값을 입력하지 않았을 때, 현재 시간이 삽입됨
Posts 테이블 생성
# 가장 최근에 실행한 db:migrate를 취소
npx sequelize db:migrate:undo
# migrations 폴더에 존재하는 migration 파일을 기반으로 테이블을 생성
npx sequelize db:migrate