우리는 저번 시간에 Sequelize 를 init (초기화) 를 하고 실제로 테이블을 생성해보고 데이터 추가, 조회 해보는것 까지 해보았습니다.

Sequelize init 을 하게되면 models, config 뿐만 아니라 seeders 그리고 migrations 두 폴더가 더 있는걸 확인할수 있습니다.
migrations 는 다음에 알아보도록 하고 Seeders에 대해 알아보도록 하겠습니다.
Seeders 는 한국말로 번역하자면 씨 뿌리는 사람 또는 기구 라고 부르기도 합니다.
Seeders 는 우리가 데이터를 일일이 추가하지 않아도 따로 설정만 해두고 Command (명령어) 만 치면 자동으로 데이터를 추가할수있게 만들어줍니다.
또한 삭제도 바로 할수있어서 굉장히 편리하다고 볼수있지만 그만큼 위험하기도 하기에 테스트 할때만 사용하는걸 추천드립니다.
sequelize seed:generate --name Test
테스트 파일을 생성해줍니다.

위 명령어를 친다면 다음과 같은 파일이 생성된걸 볼수있습니다.
'use strict';
module.exports = {
async up (queryInterface, Sequelize) {
/**
* Add seed commands here.
*
* Example:
* await queryInterface.bulkInsert('People', [{
* name: 'John Doe',
* isBetaMember: false
* }], {});
*/
},
async down (queryInterface, Sequelize) {
/**
* Add commands to revert seed here.
*
* Example:
* await queryInterface.bulkDelete('People', null, {});
*/
}
};
그리고 파일을 열어보면 이런 형태인것을 확인할 수 있습니다.
간단하게 설명 드리자면
up - Seeders를 통하여 생상할 데이터 만드는 로직
down - Seedres를 되돌릴 때 수행되는 로직
이렇게 볼 수 있습니다.
'use strict';
module.exports = {
async up (queryInterface, Sequelize) {
await queryInterface.bulkInsert('Customer', [
{
id: "seeder-test-1",
email: "test1@gmail.com",
password: "1234",
},
{
id: 'seeder-test-2',
email: "test2@gmail.com",
password: "1234",
},
{
id: 'seeder-test-3',
email: "test3@gmail.com",
password: "1234",
}
])
},
async down (queryInterface, Sequelize) {
return queryInterface.bulkDelete('Customer', null, {});
}
};
이제 테스트 데이터를 생성 해보겠습니다.
bulkInsert 부분을 보면 mysql create와 유사하지만 배열로 들어가서 여러 데이터를 한번에 넣을수있다는 점이 다릅니다.
그래서 bulkInsert 첫번째 인자에는 테이블 이름, 두번째 인자에는 배열 객체를 넣어줍니다.
sequelize db:seed:all
이제 command 창에 가서 다음과 같이 실행을 해주면 테스트 데이터가 들어가게 됩니다.

다음과 같이 나왔다면 정상적으로 나온것입니다.

이제 데이터가 들어갔는지 확인해보겠습니다.
3가지 테스트 데이터들이 잘 들어간것을 확인할수있습니다.
이제 Seed를 되돌려 보겠습니다.
Seed 되돌리는건 세가지 방법이 있는데
sequelize db:seed:undo:all
모든 Seed 를 되돌립니다.
sequelize db:seed:undo
가장 최근 Seed를 되돌립니다.
sequelize db:seed:undo --seed name-of-seed-as-in-data
특정 Seed를 되돌립니다.

sequelize db:seed:undo:all 을 하여 모두 되돌리게 되면

다음과 같이 모든 데이터가 지워진것을 볼 수 있습니다.
seeders 로 추가된 데이터 말고 기존에 있던 데이터 까지 모두 지워지니 조심하시길 바랍니다.
지금까지 Node.js ORM Sequelize Seeders에 관한 내용 이었습니다.
여기까지 따라와주셔서 감사합니당
Reference
'BackEnd > Node.js' 카테고리의 다른 글
[GCP VM 인스턴스] Node.js 설치 및 실행 (0) | 2022.07.24 |
---|---|
[ GCP VM 인스턴스 ] 기본 셋팅 (0) | 2022.07.23 |
[ ORM ] Sequelize - Migration (0) | 2022.04.29 |
[ ORM ] Sequelize - 2 (0) | 2022.04.25 |
[ ORM ] Sequelize - 1 (0) | 2022.04.25 |