[NestJS] Faker 연동

2024. 7. 23. 18:05NestJs

728x90
반응형

 

 

1. 모듈 설치

npm i typeorm-extension @faker-js/faker

 

 

typeorm 버전이 0.3.0부터는 nestjs-seeding가 적용이 되지않아 typeorm-exrtension을 설치하여야합니다.

 

2.Seed 코드 작성

import { faker } from "@faker-js/faker";
import { UsersEntity } from "../../entities/users.entity";
import { DataSource } from "typeorm";
import { Seeder, SeederFactoryManager } from "typeorm-extension";

export class UserSeeder implements Seeder {
  public async run(dataSource: DataSource, factoryManager: SeederFactoryManager): Promise<void> {
    const data = [];
    for (let i = 1; i <= 100; i++) {
      data.push({
        email: faker.internet.email(),
        name: faker.internet.userName(),
        password: faker.internet.password(),
      });
    }
    await dataSource.createQueryBuilder().insert().into(UsersEntity).values(data).execute();
  }
}

 

 

3.ormconfig.ts 작성

import { DataSource } from "typeorm";

import "dotenv/config";
import { BoardsEntity } from "./src/entities/boards.entity";
import { CardAssigneesEntity } from "./src/entities/card-assignees.entity";
import { CardCheckListEntity } from "./src/entities/card-check-list.entity";
import { CardCommentsEntity } from "./src/entities/card-comments.entity";
import { CardsEntity } from "./src/entities/cards.entity";
import { FilesEntity } from "./src/entities/files.entity";
import { ListsEntity } from "./src/entities/lists.entity";
import { MembersEntity } from "./src/entities/members.entity";
import { NotificationEntity } from "./src/entities/notification.entity";
import { RefreshTokensEntity } from "./src/entities/refresh-tokens.entity";
import { UsersEntity } from "./src/entities/users.entity";

const config = new DataSource({
  type: "mysql",
  host: "localhost",
  port: 3306,
  username: process.env.DB_USERNAME,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_DATABASE,
  entities: [
    UsersEntity,
    BoardsEntity,
    ListsEntity,
    CardsEntity,
    FilesEntity,
    CardAssigneesEntity,
    CardCheckListEntity,
    CardCommentsEntity,
    MembersEntity,
    NotificationEntity,
    RefreshTokensEntity,
  ],
  synchronize: true,
  logging: true,
});

export = config;

 

 

4.package.json파일에 scrtipts 추가

  "scripts": {
    "seed:config": "ts-node ./node_modules/typeorm-seeding/dist/cli.js config",
    "seed:run": "ts-node ./node_modules/typeorm-seeding/dist/cli.js seed"
  },

 

 

728x90
반응형