[공감병동 프로젝트] Fake Data
공감병동 프로젝트는 사용자들이 글을 작성해 주어야하는 SNS적 성격이 강한 웹사이트이기 때문에 seed data를 어떻게 넣을지 고민이 많았다. 특히 진료과별로 카테고리가 너무 많았어서 직접 작성해주기엔 한계가 너무 명확했다. 그러다 fake.js를 찾게 되었고, 이를 적용해 보기로 하였다.
fake.js
1. 설치 및 임포트
npm i faker
const faker = require("faker");
faker.locale = "ko"; // 한국어 설정
2. 적용
이번 프로젝트에서 Fake Data는 아래의 총 세 분야에서 사용하게 되었다.
1. 포스트 데이터
2. 진료과별 이야기 데이터
3. 응원하기 및 스크랩하기의 관계
3. 예시
fakeReply
는 진료과별 이야기와 상세 게시글에서 모두 사용할 수 있도록 만들었다.
// fakeReply.js
const fakeReply = (count, label, num) => {
const result = [];
for (let i = 1; i <= count; i += 1) {
const replyData = {
users_id: Math.floor(Math.random() * 10) + 1,
reply: faker.lorem.sentence(20),
...
};
replyData[label] = Math.floor(Math.random() * num) + 1;
result.push(replyData);
}
return result;
};
module.exports = fakeReply;
변수
먼저 변수로 count, label, num을 받는다.
1. count : 총 몇개의 데이터를 넣을 것인지 결정
2. label : 진료과별 이야기일 경우 departments_id
를, 상세 게시글일 경우 posts_id
를 입력
3. num : 진료과별 이야기일 경우 departments_id
의 개수를, 상세 게시글일 경우 posts_id
의 개수를 입력
replyData
다음으로 replyData를 반복문을 통해 만들어 주었는데, 데이터베이스에 입력해주어야 할 컬럼은 users_id
와 reply
, label
3가지였다.
1. users_id와 label : Math.random()으로 랜덤한 수를 뽑아 각각 데이터가 존재하는 개수를 곱해 내림 처리를 하고, +1을 해주었다.(0부터 시작하기 때문)
2. reply : faker를 활용해 데이터를 넣었다.
*sentence() : 문장들을 생성, 괄호안의 값은 문장의 길이를 결정
// 20211214075901-demo-department-reply.js
const fakeReply = require("../fakeData/fakeReply");
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.bulkInsert(
"departments_replies",
fakeReply(300, "departments_id", 42)
);
},
down: async (queryInterface, Sequelize) => {
return queryInterface.bulkDelete("departments_replies", null, {});
},
};
fakeReply 함수를 이용해 seeder 파일을 생성해 주었다. 이렇게 한 결과 데이터베이스에 대량의 seed를 넣을 수 있게 되었다!
npm i faker
const faker = require("faker");
faker.locale = "ko"; // 한국어 설정
이번 프로젝트에서 Fake Data는 아래의 총 세 분야에서 사용하게 되었다.
1. 포스트 데이터
2. 진료과별 이야기 데이터
3. 응원하기 및 스크랩하기의 관계
fakeReply
는 진료과별 이야기와 상세 게시글에서 모두 사용할 수 있도록 만들었다.
// fakeReply.js
const fakeReply = (count, label, num) => {
const result = [];
for (let i = 1; i <= count; i += 1) {
const replyData = {
users_id: Math.floor(Math.random() * 10) + 1,
reply: faker.lorem.sentence(20),
...
};
replyData[label] = Math.floor(Math.random() * num) + 1;
result.push(replyData);
}
return result;
};
module.exports = fakeReply;
변수
먼저 변수로 count, label, num을 받는다.
1. count : 총 몇개의 데이터를 넣을 것인지 결정
2. label : 진료과별 이야기일 경우 departments_id
를, 상세 게시글일 경우 posts_id
를 입력
3. num : 진료과별 이야기일 경우 departments_id
의 개수를, 상세 게시글일 경우 posts_id
의 개수를 입력
replyData
다음으로 replyData를 반복문을 통해 만들어 주었는데, 데이터베이스에 입력해주어야 할 컬럼은 users_id
와 reply
, label
3가지였다.
1. users_id와 label : Math.random()으로 랜덤한 수를 뽑아 각각 데이터가 존재하는 개수를 곱해 내림 처리를 하고, +1을 해주었다.(0부터 시작하기 때문)
2. reply : faker를 활용해 데이터를 넣었다.
*sentence() : 문장들을 생성, 괄호안의 값은 문장의 길이를 결정
// 20211214075901-demo-department-reply.js
const fakeReply = require("../fakeData/fakeReply");
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.bulkInsert(
"departments_replies",
fakeReply(300, "departments_id", 42)
);
},
down: async (queryInterface, Sequelize) => {
return queryInterface.bulkDelete("departments_replies", null, {});
},
};
fakeReply 함수를 이용해 seeder 파일을 생성해 주었다. 이렇게 한 결과 데이터베이스에 대량의 seed를 넣을 수 있게 되었다!
Author And Source
이 문제에 관하여([공감병동 프로젝트] Fake Data), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sominpark/공감병동-프로젝트-Fake-Data-gycy6rp5저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)