[コンセンサス計画]Fake Data


共感病棟プロジェクトは、ユーザーが文章を書くSNSの性格が強いサイトなので、seedデータをどう入れるか悩んでいます.特に各診療科の分類が多すぎて直接記入できません.そしてfakejsが見つかり、試用することにしました.

fake.js


1.インストールとインポート


npm i faker
const faker = require("faker");

faker.locale = "ko"; // 한국어 설정

2.応用


本プロジェクトでは、Fake Dataは以下の3つの分野で使用されます.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_idreply,label3種である.
1.users idとlabel:Math.random()でランダムに1つの数を抽出し,各データに存在する個数に降順処理を乗算し,+1を行う.(0から始まるので)
2.reply:fakerでデータを入力します.
*文():文を生成し、括弧内の値で文の長さを決定
// 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を入れることができます!