Migration을 하면 데이터베이스에 테이블 생성 및 삭제할것을 미리 선언해두는것이고

Seed는 그 테이블에 더미데이터를 집어 넣는거

공식문서 : https://sequelize.org/docs/v6/other-topics/migrations/

Migrations | Sequelize

초기 세팅

npm install sequelize
npm install --save-dev sequelize-cli
npx sequelize-cli init

Migration 파일 생성

npx sequelize-cli model:generate --name user --attributes name:string,age:integer

터미널에 위의 코드 입력시

//20220503160532-create-user.js
'use strict';
module.exports = {
  async up(queryInterface, Sequelize) {
    await queryInterface.createTable('users', { //테이블 이름 단수로 하고 싶으면 s 제거
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER
      },
      name: {
        type: Sequelize.STRING
      },
      age: {
        type: Sequelize.INTEGER
      },
      createdAt: {
        allowNull: false,
        //defaultValue: Sequelize.fn("now") // 현재값을 원한다면
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  async down(queryInterface, Sequelize) {
    await queryInterface.dropTable('users'); ////테이블 이름 단수로 하고 싶으면 s 제거
  }
};
// /models/user.js
'use strict';
const {
  Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
  class user extends Model {
    /**
     * Helper method for defining associations.
     * This method is not a part of Sequelize lifecycle.
     * The `models/index` file will call this method automatically.
     */
    static associate(models) {
      // define association here
    }
  }
  user.init({
    name: DataTypes.STRING,
    age: DataTypes.INTEGER
  }, {
    sequelize,
    modelName: 'user',
    // 테이블이름 단수형으로 쓰고 싶다면 아래 두개와 migration파일내의 이름도 단수로
     //modelName: "user",
     //freezeTableName: true,
  });
  return user;
};

이런 파일이 생성된다

테이블이름이 자동으로 복수형으로 생성되는데

단수형으로 바꾸고 싶다면  위의 주석처럼 migration 파일과 model파일에서 설정해준다

Migrate 파일 실행

npx sequelize db:migrate

Migrate 실행 취소

npx sequelize-cli db:migrate:undo // 가장 최근꺼 되돌리기
npx sequelize-cli db:migrate:undo:all // 초기 상태로 돌리기
npx sequelize-cli db:migrate:undo:all --to XXXXXXXXXXXXXX-create-posts.js //특정 마이그레이션으로 돌리기

Seed 파일 생성

npx sequelize-cli seed:generate --name demo-user
// /seeders/20220408012810-demo-user.js
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.bulkInsert("user", [
      {
        name: "admin",
        age: 20,
        createdAt: new Date(),
        updatedAt: new Date(),
      },
      {
        name: "sub",
        age: 21,
        createdAt: new Date(),
        updatedAt: new Date(),
      },
    ]);
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.bulkDelete("user", null, {});
  },
};

이런 파일이 생성되는데 위의 코드처럼 적절한 더미데이터를 넣어준다

Seed 파일 실행

npx sequelize-cli db:seed:all

Seed 파일 실행 취소

npx sequelize-cli db:seed:undo // 최근 시드 취소
npx sequelize-cli db:seed:undo --seed name-of-seed-as-in-data // 특정 시드 취소
npx sequelize-cli db:seed:undo:all // 모든 시드 취소

관계 설정에 대해 : Sequelize 관계 설정 1 : N, N : M(1대다, 다대다)

Sequelize 관계 설정 1 : N, N : M(1대다, 다대다)