시드 데이터는 데이터베이스에 초기 데이터를 삽입하는 용도로 사용된다. 주로 개발 및 테스트 환경에서 사용되며, 다음과 같은 몇 가지 이유로 인해 유용하다:
테스트 및 개발:
테스트 데이터:
초기 데이터 제공:
데이터 마이그레이션:
개발자 편의성:
시드 데이터를 사용함으로써 개발 및 테스트 과정이 효율적으로 이루어지며, 초기 배포 시 애플리케이션이 필요한 최소한의 데이터로 구동될 수 있다.
시퀄라이즈 모델에 시드 데이터를 생성하려면 다음 단계를 따를 수 있다.
시드 파일 생성:
seeders 디렉토리 안에 각 모델에 대한 JavaScript 파일을 만든다. 예를 들어 products 모델과 users 모델이 있다면 products.seed.js 및 users.seed.js와 같이 생성할 수 있다.
시더 로직 작성:
각 시드 파일에는 Sequelize를 사용하여 샘플 데이터를 생성하고 해당 테이블에 삽입하는 로직을 작성한다.
products.seed.js 예제:
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
// products 테이블에 대한 시드 데이터
return queryInterface.bulkInsert('products', [
{ name: '제품 1', price: 10.99, createdAt: new Date(), updatedAt: new Date() },
{ name: '제품 2', price: 24.99, createdAt: new Date(), updatedAt: new Date() },
// 필요한 만큼 제품 항목 추가
], {});
},
down: async (queryInterface, Sequelize) => {
// 롤백 시 시드된 데이터 삭제
return queryInterface.bulkDelete('products', null, {});
}
};
users.seed.js 예제:
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
// users 테이블에 대한 시드 데이터
return queryInterface.bulkInsert('users', [
{ username: 'user1', email: 'user1@example.com', password: 'hashedpassword1', createdAt: new Date(), updatedAt: new Date() },
{ username: 'user2', email: 'user2@example.com', password: 'hashedpassword2', createdAt: new Date(), updatedAt: new Date() },
// 필요한 만큼 사용자 항목 추가
], {});
},
down: async (queryInterface, Sequelize) => {
// 롤백 시 시드된 데이터 삭제
return queryInterface.bulkDelete('users', null, {});
}
};
시더 실행:
시드 파일을 생성한 후에는 Sequelize CLI를 사용하여 시더를 실행할 수 있다. 다음과 같이 명령한다.
npx sequelize-cli db:seed --seed <시드-파일명>