Skip to content

시드 생성 예시

kyunghan edited this page Jun 1, 2021 · 3 revisions

시드 생성

시드 생성

npx sequelize-cli seed:generate --name authors
npx sequelize-cli seed:generate --name articles

위의 명령어를 통해 생성한 마이그레이션 파일, 모델을 활용한 test 데이터를 생성할 수 있다.

article seed
// 20210518020946-articles artice test data
'use strict';
const { Author } = require('../models');
const CATEGORY = require('../lib/constants/category')
const getRandomInt = require('../lib/getRandomInt');

module.exports = {
  up: async (queryInterface, Sequelize) => {
    const authors = await Author.findAll({});
    await Promise.all(
      authors.map(async (author) => {
        await author.createArticle({
          headline: 'economy article',
          category: CATEGORY.ECONOMY,
          author: author.name,
          image: 'fb15fbc7348eea8bfe0849096a31354f',
          imageDesc: 'this is image description',
          imageFrom: 'image source',
          briefing: 'this is briefing',
          status: getRandomInt(1, 4),
          paragraphs: JSON.stringify({ paragraphs: [] }),
        });
      }),
    );
  },

  down: async (queryInterface, Sequelize) => {
    return queryInterface.bulkDelete('Articles');
  },
};

언급했듯이 기사는 기자에 포함되어있기 때문에 기자를 특정하여 기사를 생성할 수 있다.

const authors = await Author.findAll({});
    await Promise.all(
      authors.map(async (author) => {
        await author.createArticle({ ... });
      ...});
    ...);

위의 코드 부분에서 기자를 불러온 다음 모든 기자가 createArticle을 통해 기사를 생성한다.

createArticle이라는 함수는 따로 정의하지 않았지만 Author와 Article의 관계를 정의했기 때문에 사용할 수 있는 sequelize의 함수이다.

author seed
// 20210518015026-chief.js

'use strict';

module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.bulkInsert(
      'Authors',
      [
        {
          email: '[email protected]',
          name: 'chief',
          code: 1,
          position: 3,
          contact: '01012341234',
          password: '$2b$10$fO/O6fF5w1HDkXNab8AMBOYE/9ByW8/sjIeXpQONQgJxkegxdFDIq',
          photo: 'chief',
          createdAt: Sequelize.fn('now'),
          updatedAt: Sequelize.fn('now'),
        },
      ],
      { validate: false },
    );
  },

  down: async (queryInterface, Sequelize) => {
     await queryInterface.bulkDelete('Authors', {position: 3});
  }
};
npx sequelize-cli db:migrate
npx sequelize-cli db:seed:all

위의 명령어를 통해 test 데이터를 생성한다.

이제 localhost:4000/author로 이동해서 생성한 기자로 로그인이 가능하다.

계정과 비밀번호는 [email protected] a123123이다.

Clone this wiki locally