가끔 작업을 하다보면 테스트용으로 많은 데이터가 필요할 때가 있다.
(ex: 페이지네이션)
그렇때 prisma에서는 유용한 기능을 제공해준다.
// prisma/seed.ts
import { PrismaClient } from '@prisma/client';
const client = new PrismaClient();
먼저 prisma client를 불러온다.
// prisma/seed.ts
[...Array.from(Array(500).keys())].forEach(async (item) => {
// 생략
});
그리고 엄청나게 많은 데이터를 불러올 샘플 배열을 만들고, 생성한다.
// prisma/seed.ts
// sample이라는 가상의 테이블이 있다 가정
// 그 샘플은 name과 user를 가진다. (name은 id를 가진다.)
[...Array.from(Array(500).keys())].forEach(async (item) => {
const stream = await client.sample.create({
data:{
name: String(item),
user: {
connect: {
id: 1,
},
},
},
});
console.log(`${item}/500`);
});
위와 같은 코드를 실행하기 위해서는 package 파일에 추가해야 할 것이 있다.
위 코드는 prisma/seed.ts와 같은 경로에 있다고 가정할 때
package 파일 맨 밑에 다음과 같은 코드를 작성해준다.
"prisma":{
"seed": "ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts"
}
터미널을 열고 다음과 같은 명령어를 입력해준다.(참고로 db와 연결된 상태여야 한다.)
npx prisma db seed