Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- python
- DB
- Linux
- react
- frontend
- Express
- figma
- DM
- Git
- GAN
- UI
- ts
- C++
- ps
- PRISMA
- CSS
- review
- html
- PyTorch
- nodejs
- js
- Three
- API
- sqlite
- vscode
- postgresql
- CV
- SOLID
- ML
- mongo
Archives
- Today
- Total
아카이브
[DB][Prisma] Prisma에서 데이터 시딩하기 본문
Prisma를 이용해 데이터 시딩(DB에 초기 record 들을 삽입하는 것)을 할 때는
API를 만들때와 마찬가지로 PrismaClient 라이브러리를 사용합니다.
우선 시딩을 위해서는 두 가지 JS 코드가 필요하며,
코드파일은 schema.prisma 코드와 같은 경로(=터미널로 실행시킬 수 있는 경로)에 있어야 합니다.
- 시딩할 데이터를 기록한 mock 파일 (mock.js)
- 데이터 시딩을 실행할 시딩 파일 (seed.js)
seed.js의 코드는 다음과 같습니다.
PrismaClient.user.deleteMany( ) 를 사용해 기존에 있던 데이터들을 초기화하고,
PrismaClient.user.createMany( ) 를 사용해 mock.js에 기록된 새로운 데이터들을 추가합니다.
두 함수 모두 Promise를 반환하기 때문에, await 구문을 추가합니다.
import { PrismaClient } from '@prisma/client';
import { USERS } from './mock.js';
const prisma = new PrismaClient();
async function main() {
await prisma.user.deleteMany(); // delete existing data
await prisma.user.createMany({ // seed mock data
data: USERS,
skipDuplicates: true, // skip if there are the duplicates on the @unique field
});
}
main()
.then(async () => {
await prisma.$disconnect();
})
.catch(async (e) => {
console.error(e);
await prisma.$disconnect();
process.exit(1);
});
데이터 시딩을 터미널로 실행시키기 위해 package.json에 명령어를 추가합니다.
{
"dependencies": {
"@prisma/client": "^5.4.2",
"dotenv": "^16.3.1",
"express": "^4.18.2",
"is-email": "^1.0.2",
"is-uuid": "^1.0.2",
"prisma": "^5.4.2",
"superstruct": "^1.0.3"
},
"devDependencies": {
"nodemon": "^3.0.1"
},
"type": "module",
"scripts": {
"dev": "nodemon app.js",
"start": "node app.js"
},
// $ prisma seed 명령어로 seed.js를 실행할 수 있게 합니다.
"prisma": {
"seed": "node prisma/seed.js"
}
// * * * * * *
}
이후 터미널에 아래 명령어를 실행시키면 데이터 시딩이 정상적으로 수행되는 것을 확인할 수 있습니다.
npx prisma db seed
728x90
'Backend > DB' 카테고리의 다른 글
[DB][Prisma] foreign key를 이용해 일대다/일대일/다대다 관계 정의하기 (0) | 2024.08.26 |
---|---|
[DB][Prisma] PrismaClient 함수 정리 (0) | 2024.08.25 |
[DB][Prisma][Express] Prisma에서 Express를 사용해서 DB CRUD API 만들기 (0) | 2024.08.24 |
[DB][Prisma] Prisma studio 사용하기 (0) | 2024.08.24 |
[DB][Prisma] Can't reach database server at 'localhost:5432' 오류 (0) | 2024.08.23 |
Comments