-
Notifications
You must be signed in to change notification settings - Fork 10
시드 생성 예시
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
이다.