사실 seed 데이터를 삽입하는 부분도 sequelize-cli로 처리할 수 있습니다. 어떻게 하면 되는지 보여드릴게요. 일단 이전 영상에서 생성했던 Students 테이블의 모든 row들을 삭제하고 오세요.
일단 아래와 같은 명령을 실행해봅시다.
npx sequelize 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
실행하면
이렇게 Student 테이블에 row들이 잘 추가되는 것을 알 수 있다.
이렇게 코드로 seed 데이터들을 추가하는 방법 뿐만 아니라 seed 파일을 별도로 정의하고 sequelize-cli 명령으로 seed 데이터를 추가할 수 있다는 사실을 잘 기억하자.