DEV Community

Cover image for Cara Menginstal dan Menghubungkan Prisma ORM ke Next.js dengan Database PostgreSQL
Arry Kusuma Putra
Arry Kusuma Putra

Posted on

Cara Menginstal dan Menghubungkan Prisma ORM ke Next.js dengan Database PostgreSQL

Install Prisma dan dependensi PostgreSQL

npm install prisma @types/pg --save-dev
npm install @prisma/client @prisma/adapter-pg pg dotenv
Enter fullscreen mode Exit fullscreen mode

Inisialisasi Prisma

npx prisma init --output ../generated/prisma
Enter fullscreen mode Exit fullscreen mode

Buat database PostgreSQL dengan Prisma Postgres

npx create-db
Enter fullscreen mode Exit fullscreen mode

Setelah database selesai dibuat, anda akan menemukan pesan berikut di terminal

β”Œ  πŸš€ Creating a Prisma Postgres database
β”‚
β—‡  Database created successfully!
β”‚
β”‚
●  Database Connection
β”‚
β”‚
β”‚    Connection String:
β”‚
β”‚    postgres://randomid:xyz@db.prisma.io:5432/postgres?sslmode=require
β”‚
β”‚
β—†  Claim Your Database
β”‚
β”‚    Keep your database for free:
β”‚
β”‚    https://create-db.prisma.io/claim?projectID=xyz&utm_source=create-db&utm_medium=cli
β”‚
β”‚    Database will be deleted on 7/12/2026, 4:01:06 PM if not claimed.
β”‚
β””  Done!
Enter fullscreen mode Exit fullscreen mode

Klik tautan bagian Keep your database for free (contoh: https://create-db.prisma.io/claim?projectID=xyz&utm_source=create-db&utm_medium=cli). Silahkan klik "Claim Database"

Buat file .env di bagian root projek (paling luar), isi file .env dengan tautan bagian Connection String (contoh: postgres://randomid:xyz@db.prisma.io:5432/postgres?sslmode=require)

Konfigurasi schema.prisma di prisma/schema.prisma

generator client {
  provider = "prisma-client"
  output   = "../generated/prisma"
}

datasource db {
  provider = "postgresql"
}

model User { 
  id    Int     @id @default(autoincrement()) 
  email String  @unique
  name  String?
  posts Post[]
} 

model Post { 
  id        Int     @id @default(autoincrement()) 
  title     String
  content   String?
  published Boolean @default(false) 
  author    User    @relation(fields: [authorId], references: [id]) 
  authorId  Int
} 
Enter fullscreen mode Exit fullscreen mode

Jalankan migrasi database

npx prisma migrate dev --name init
Enter fullscreen mode Exit fullscreen mode

Generate Prisma Client

npx prisma generate
Enter fullscreen mode Exit fullscreen mode

Konfigurasikan Prisma Client di src/lib/prisma.ts

import { PrismaPg } from "@prisma/adapter-pg";
import "dotenv/config";
import { PrismaClient } from "../../generated/prisma/client";

const connectionString = `${process.env.DATABASE_URL}`;
const adapter = new PrismaPg({ connectionString });

const globalForPrisma = globalThis as unknown as { prisma: PrismaClient };

export const prisma = globalForPrisma.prisma || new PrismaClient({ adapter });

if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma;
Enter fullscreen mode Exit fullscreen mode

Untuk memudahkan migrasi dan reset database untuk memperbarui model database maka tambahkan kode ini di file package.json

"scripts": {
    "prisma:reset": "prisma generate && prisma db push --force-reset && prisma db seed"
  },
Enter fullscreen mode Exit fullscreen mode

Buka Prisma Studio untuk mengelola data

npx prisma studio
Enter fullscreen mode Exit fullscreen mode

Top comments (0)