Sequelize 튜토리얼(7)_명령어로 seed 데이터 삽입

차분한열정·2021년 4월 7일
0

Sequelize 튜토리얼

목록 보기
7/14

사실 seed 데이터를 삽입하는 부분도 sequelize-cli로 처리할 수 있습니다. 어떻게 하면 되는지 보여드릴게요. 일단 이전 영상에서 생성했던 Students 테이블의 모든 row들을 삭제하고 오세요.

일단 아래와 같은 명령을 실행해봅시다.

npx sequelize seed:generate --name Student
  • seed:generate
  • --name Student

가 보이는데요. 말 그대로 Student라는 이름의 seed를 생성하라는 뜻입니다. 실행해보면 seed 디렉토리 밑에 (타임스탬프)-Student.js 라는 파일이 생성되고 해당 파일을 보면

// (타임스탬프)-Student.js
'use strict';

module.exports = {
  up: async (queryInterface, Sequelize) => {
    /**
     * Add seed commands here.
     *
     * Example:
     * await queryInterface.bulkInsert('People', [{
     *   name: 'John Doe',
     *   isBetaMember: false
     * }], {});
    */
  },

  down: async (queryInterface, Sequelize) => {
    /**
     * Add commands to revert seed here.
     *
     * Example:
     * await queryInterface.bulkDelete('People', null, {});
     */
  }
};

이렇게 생겼습니다. 이전 글에서 봤던 migration 파일과 구조가 똑같죠? 지금 up 메소드와 down 메소드가 보이는데요. up은 테이블에 seed를 추가할 때, down은 seed를 제거할 때 사용합니다. 우리는 up 부분을 채워주면 되는데요. 이번에도 migration 파일에서처럼 queryInterface라고 하는 객체를 사용하면 됩니다. 코드를 이렇게 고쳐볼게요.

'use strict';

module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.bulkInsert('Students', [
      {
        registrationNum: 20203718,
        name: '김철수',
        age: 22,
        createdAt: new Date(),
        updatedAt: new Date(),
      },
      {
        registrationNum: 20208712,
        name: '이나라',
        age: 21,
        createdAt: new Date(),
        updatedAt: new Date(),
      },
      {
        registrationNum: 20190124,
        name: '이태용',
        age: 23,
        createdAt: new Date(),
        updatedAt: new Date(),
      },
      {
        registrationNum: 20180051,
        name: '최미나',
        age: 22,
        createdAt: new Date(),
        updatedAt: new Date(),
      },
    ]);
  },

  down: async (queryInterface, Sequelize) => {
    await queryInterface.bulkDelete('People', null);
  },
};

이렇게 queryInterface 객체의 bulkInsert라는 메소드를 사용하면 됩니다. 이렇게 파일을 저장하고

npx sequelize db:seed --seed 20210407025109-Student.js
  • --seed 옵션은 적용할 seed 파일을 의미한다. 우리가 방금 코드를 작성한 파일 이름을 적어주면 된다.

실행하면

이렇게 Student 테이블에 row들이 잘 추가되는 것을 알 수 있다.

이렇게 코드로 seed 데이터들을 추가하는 방법 뿐만 아니라 seed 파일을 별도로 정의하고 sequelize-cli 명령으로 seed 데이터를 추가할 수 있다는 사실을 잘 기억하자.

profile
성장의 기쁨

0개의 댓글