Faker로 쉽게 더미 데이터 생성하기

Odyssey·2025년 7월 10일
0

Next.js_study

목록 보기
54/58
post-thumbnail

2025.7.10 목요일의 공부기록

이번 글에서는 Prisma와 Faker를 활용하여 데이터베이스에 자동으로 더미(dummy) 데이터를 생성하는 방법을 알아보자.


Prisma 시딩(Seeding)이란?

시딩(seeding)은 데이터베이스에 초기 데이터를 넣어주는 작업을 의미한다. Prisma를 이용하면 간단한 스크립트를 통해 데이터베이스에 더미 데이터를 손쉽게 생성할 수 있다.

이 과정은 주로 개발 및 테스트 환경을 구성할 때 사용된다.

🔗 Prisma 시딩 공식 문서


Prisma와 Faker 설치하기

더미 데이터 생성을 위해 Faker.js 라이브러리를 사용한다.

npm install --save-dev @faker-js/faker

Prisma 시드(seed) 스크립트 작성하기

아래와 같이 /prisma/seed.js 파일을 만들어 더미 데이터를 생성하는 스크립트를 작성한다.

/prisma/seed.js 파일 예시 :

import { faker } from "@faker-js/faker";
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();

(async () => {
  for (let i = 0; i < 10; i++) {
    await prisma.product.create({
      data: {
        price: +faker.commerce.price({ min: 10000, max: 1000000 }),
        description: faker.commerce.productDescription(),
        title: faker.commerce.productName(),
        photo: faker.image.urlPicsumPhotos(),
        created_at: new Date(),
        user: {
          connect: {
            id: 7, // 기존에 존재하는 유효한 사용자 ID로 변경해야 함
          },
        },
      },
    });
  }
})();

설명:

  • faker.commerce.price(): 상품 가격을 지정된 범위(min~max)에서 랜덤으로 생성한다.
  • faker.commerce.productDescription(): 임의의 제품 설명을 생성한다.
  • faker.commerce.productName(): 임의의 제품 이름을 생성한다.
  • faker.image.urlPicsumPhotos(): Picsum에서 임의의 이미지를 가져온다.
  • user.connect: 기존 사용자의 ID를 연결해준다. (반드시 유효한 사용자 ID로 교체)

Prisma DB에 데이터 시딩하기

시드 스크립트를 작성한 뒤 아래 명령어를 터미널에서 실행한다.

npx prisma db seed

외부 이미지 로딩 에러 해결 방법 (Next.js 설정)

더미 데이터에서 외부 이미지를 사용하면 기본적으로 Next.js의 Image 컴포넌트에서 보안상 문제가 발생할 수 있다.

이를 해결하기 위해 next.config.mjs 파일에 허용할 외부 도메인을 명시적으로 등록한다.

next.config.mjs 수정 예시 코드:

/** @type {import('next').NextConfig} */
const nextConfig = {
   images: {
    remotePatterns: [
      {
        hostname: "picsum.photos",
      },
    ],
  },
};

export default nextConfig;
  • 이 설정을 추가한 후 서버를 다시 실행해야 적용된다.
npm run dev

0개의 댓글