2025.7.10 목요일의 공부기록
이번 글에서는 Prisma와 Faker를 활용하여 데이터베이스에 자동으로 더미(dummy) 데이터를 생성하는 방법을 알아보자.
시딩(seeding)은 데이터베이스에 초기 데이터를 넣어주는 작업을 의미한다. Prisma를 이용하면 간단한 스크립트를 통해 데이터베이스에 더미 데이터를 손쉽게 생성할 수 있다.
이 과정은 주로 개발 및 테스트 환경을 구성할 때 사용된다.
더미 데이터 생성을 위해 Faker.js 라이브러리를 사용한다.
npm install --save-dev @faker-js/faker
아래와 같이 /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로 교체)시드 스크립트를 작성한 뒤 아래 명령어를 터미널에서 실행한다.
npx prisma db seed
더미 데이터에서 외부 이미지를 사용하면 기본적으로 Next.js의 Image 컴포넌트에서 보안상 문제가 발생할 수 있다.
이를 해결하기 위해 next.config.mjs
파일에 허용할 외부 도메인을 명시적으로 등록한다.
/** @type {import('next').NextConfig} */
const nextConfig = {
images: {
remotePatterns: [
{
hostname: "picsum.photos",
},
],
},
};
export default nextConfig;
npm run dev