Prisma | Simplify working and interacting with databases
Prisma는 Node.js와 TypeScript를 위한 차세대 ORM(Object-Relational Mapping)입니다. 다음은 Next.js 15 프로젝트에서 Prisma를 설정하고 사용하는 방법을 단계별로 설명합니다.
https://www.youtube.com/watch?v=rLRIB6AF2Dg
version: '3.8'
services:
db:
image: postgres:15
container_name: test-db
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: testtest
POSTGRES_DB: testdb
volumes:
- test_db_data:/var/lib/postgresql/data
volumes:
test_db_data:
prisma/schema.prisma 파일에서 데이터베이스 모델을 정의합니다:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
prisma generate
lib/prisma.ts 파일을 생성하여 Prisma Client를 설정합니다:
import { PrismaClient } from '@prisma/client'
const globalForPrisma = global as unknown as { prisma: PrismaClient }
export const prisma = globalForPrisma.prisma || new PrismaClient()
if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma
const createUser = async () => {
const user = await prisma.user.create({
data: {
email: '[email protected]',
name: 'John Doe',
},
})
return user
}