Back to Dashboard
Database with Prisma
Belajar cara mengintegrasikan database relasional menggunakan Prisma ORM yang type-safe.
1. Prisma Schema
Prisma menggunakan file schema.prismauntuk mendefinisikan struktur database Anda. Ini adalah "Single Source of Truth" untuk model data dan koneksi database.
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[]
}
model Post {
id Int @id @default(autoincrement())
title String
authorId Int
author User @relation(fields: [authorId], references: [id])
}Interactive Demo: Schema Visualizer
Pahami bagaimana Prisma menghubungkan model-model data Anda secara relasional.
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
}
USER
1-to-Many
POST
Useful Command:
npx prisma migrate dev --name init2. Usage in Server Components
Karena Next.js memiliki Server Components, Anda bisa langsung memanggil Prisma Client tanpa perlu membuat API Route terpisah.
app/users/page.tsx
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
export default async function UsersPage() {
const users = await prisma.user.findMany({
include: { posts: true }
})
return (
<div>
{users.map(user => (
<div key={user.id}>
{user.name} - {user.posts.length} posts
</div>
))}
</div>
)
}Keunggulan Type-safety
Prisma secara otomatis men-generate TypeScript types berdasarkan schema Anda. Jika Anda mencoba mengakses field yang tidak ada, IDE akan langsung memberitahu kesalahannya.