[Prisma] 데이터베이스 시딩(Database seeding)

찐새·2022년 5월 31일
2

next.js

목록 보기
16/41
post-thumbnail

데이터베이스 시딩(Database Seeding)

코드 테스트를 위해서 일정량 이상의 데이터가 필요한 경우 더미 데이터를 생성한다. 이를 데이터베이스에 씨앗을 뿌린다는 의미로 데이터베이스 시딩이라고 한다.

Prisma에서는 다음과 같이 Seed를 생성할 수 있다.

// prisma/seed.ts
import { PrismaClient } from "@prisma/client";

const client = new PrismaClient();

async function main() {
  [...Array.from(Array(30).keys())].forEach(async (item) => {
    await client.profile.create({
      data: {
        stringKey: String(item),
        numberKey: item,
        user: {
          connect: {
            id: 1,
          }
        }
      });
    console.log(`${item}/30`);
  });
}

main()
  .catch((e) => console.log(e))
  .finally(() => client.$disconnect);
  1. prisma 디렉토리에 seed.ts파일을 생성한다.
  2. client를 호출한 후 필요한 데이터의 개수만큼 Array를 만든다.
  3. 더미를 생성할 릴레이션의 어트리뷰트를 데이터에 알려준다.
  4. connect로 외래키와 연결한다.
  5. main()함수 실행, 에러 제어,finally로 DB연결을 종료한다.
// package.json
{
  ...rest,
  "prisma": {
    "seed": "ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts"
  }
}

// ts-node 설치
npm i ts-node

// seed 생성
npx prisma db seed
  1. package.json에 위의 prisma코드를 추가한다.
  2. ts-node가 없다면 설치한다.
  3. prisma에 생성한 seed를 푸시한다.

노마드 코더 - 캐럿마켓 클론코딩
Prisma - Database Seeding

profile
프론트엔드 개발자가 되고 싶다

0개의 댓글