LearnNext
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 init

2. 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.