시퀄라이즈 모델에 시드 데이터를 생성하기

J Park·2023년 11월 15일

시드 데이터는 데이터베이스에 초기 데이터를 삽입하는 용도로 사용된다. 주로 개발 및 테스트 환경에서 사용되며, 다음과 같은 몇 가지 이유로 인해 유용하다:

  1. 테스트 및 개발:

    • 개발자들은 새로운 개발 환경을 설정할 때 실제 데이터베이스에서 작업하는 대신 시드 데이터를 사용하여 초기 데이터를 생성할 수 있다.
    • 샘플 데이터로 개발 중에 애플리케이션의 기능을 테스트하는 데 도움이 된다.
  2. 테스트 데이터:

    • 테스트 시나리오를 구성하고 테스트 데이터베이스를 미리 채우는 데 사용된다.
    • 실제 데이터베이스에서 실행되는 테스트에서 예상치 못한 문제를 방지하고 일관된 테스트 결과를 얻을 수 있다.
  3. 초기 데이터 제공:

    • 애플리케이션이 처음으로 배포될 때 초기 데이터베이스를 채우는 데 사용된다.
    • 초기 사용자, 설정, 기본 콘텐츠 등을 제공하여 사용자가 애플리케이션을 사용할 수 있게 한다.
  4. 데이터 마이그레이션:

    • 데이터베이스 스키마의 변경이 있을 때, 마이그레이션과 함께 사용되어 초기 데이터베이스 상태를 유지하는 데 도움이 된다.
  5. 개발자 편의성:

    • 특정 테스트 시나리오나 개발 환경에서 자주 사용되는 데이터를 사전에 데이터베이스에 추가함으로써 개발자들이 더 편리하게 작업할 수 있다.

시드 데이터를 사용함으로써 개발 및 테스트 과정이 효율적으로 이루어지며, 초기 배포 시 애플리케이션이 필요한 최소한의 데이터로 구동될 수 있다.

시퀄라이즈 모델에 시드 데이터를 생성하려면 다음 단계를 따를 수 있다.

시드 파일 생성:
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 <시드-파일명>
profile
꾸준히 공부하는 개발자

0개의 댓글