
npx sequelize model:generate --name Member --attributes name:string,team:string,position:string,email:string,phoneNumber:string,admissionDate:date,birthday:date,profileImage:string
Member 라는 이름의 모델을 생성하는 명령어이다.
--attributes 다음에 Member 테이블에 들어갈 각 속성의 key와 타입을 적어준다.

위 명령어를 통해 /migrations 폴더 안에 아래와 같은 파일이 생성된다.
// /migrations/20240211093220-create-member.js
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable('Members', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
id: {
type: Sequelize.INTEGER
},
name: {
type: Sequelize.STRING
},
// ... 생략
birthday: {
type: Sequelize.DATE
},
profileImage: {
type: Sequelize.STRING
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn('now')
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn('now')
}
});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable('Members');
}
};
각 프로퍼티에 설정했던 데이터 타입들이 데이터베이스의 테이블의 각 컬럼의 데이터 타입으로 적용되었다.
| Sequelize 값 | 타입 종류 | 데이터베이스에서의 타입 |
|---|---|---|
| Sequelize.STRING | 문자열 타입 | VARCHAR(255) |
| Sequelize.INTEGER | 정수형 타입 | INTEGER |
| Sequelize.FLOAT | 실수형 타입 | FLOAT |
| Sequelize.DATE | 날짜형 타입 | DATETIME |
데이터베이스의 테이블에서 특정 row를 고유하게 식별할 수 있게 해주는 column 이다.
id 프로퍼티를 추가하고 primary key로 설정해준다. await queryInterface.createTable('Members', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
//... 생략
{
allowNull : 빈 값을 허용하지 않음
autoIncrement : 자동으로 이전 값보다 증가된 새로운 값을 추가해 줌
createdAt, updatedAt은 model 을 생성할 때 직접 추가하지 않은 값이지만 Sequelize 에서 기본적으로 추가된다.
defaultValue 를 추가해 table row를 생성할 때마다 값을 입력하지 않아도 기본 값으로 채워지도록 할 수 있다.
// /migrations/20240211093220-create-member.js
// ...
createdAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn('now')
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn('now')
}
// ...
만약 테이블에 어떤 row를 새롭게 삽입할 때 특정 값을 설정해주지 않으면, defaultValue에 있는 값이 들어가게 된다.
Sequelize.fn('now') : MySQL 데이터베이스에서 사용할 수 있는 now라는 함수를 의미한다. Sequelize.fn('함수 이름') 형식의 코드를 사용한다. migration : 데이터베이스에서 발생하는 각종 변경사항
테이블 생성, 컬럼 추가/삭제, 데이터 추가/삭제 등과 같은 작업 하나하나가 모두 마이그레이션이다.
/migrations디렉토리에는 이런 마이그레이션 내용이 담긴 파일을 여러 개 둘 수 있다.
npx sequelize db:migrate
위의 명령을 실행하면 migrations 디렉토리 안에 있는 마이그레이션 파일들이 각각의 이름에 있는 날짜시간 순서대로 실행된다.

npx sequelize db:migrate:undo
