Back to blog
Backend

Membuat API CRUD (Create, Read, Update, Delete) ke PostgreSQL

Waktunya menggabungkan semuanya! Mari hubungkan rute Express.js milikmu dengan Prisma Client untuk membaca dan menyimpan data secara permanen.

super admin·30 Juni 2026·2 min read
Membuat API CRUD (Create, Read, Update, Delete) ke PostgreSQL
Article Content

Menyambungkan Otak dan Gudang Memori

Di artikel Part 2, kita sudah membuat Route GET dan POST di Express, tapi datanya masih abal-abal (Hardcoded). Di artikel ini, kita akan mengganti data abal-abal tersebut dengan fungsi tembakan nyata ke PostgreSQL menggunakan bantuan Prisma Client.

Buka kembali file index.js milikmu, dan tambahkan baris koneksi Prisma di bagian paling atas.

const express = require('express');
const { PrismaClient } = require('@prisma/client');

const app = express();
const prisma = new PrismaClient(); // Inisialisasi Prisma

app.use(express.json()); // Wajib untuk menerima JSON Body

1. READ (Mengambil Semua User dari Database)

Ubah fungsi app.get kamu. Karena proses *database* memakan waktu jaringan (bisa sedetik), kita WAJIB menggunakan async / await.

app.get('/api/users', async (req, res) => {
  try {
    // Ambil semua data dari Tabel User
    const semuaUser = await prisma.user.findMany();
    res.status(200).json(semuaUser);
  } catch (error) {
    res.status(500).json({ pesan: "Terjadi error di server!" });
  }
});

2. CREATE (Memasukkan User Baru)

Saat Frontend mengirim data nama, email, dan password, kita menaruhnya ke database pakai prisma.user.create().

app.post('/api/users', async (req, res) => {
  try {
    const { nama, email, password } = req.body;

    const userBaru = await prisma.user.create({
      data: {
        nama: nama,
        email: email,
        password: password
      }
    });
    res.status(201).json({ pesan: "User sukses dibuat!", data: userBaru });
  } catch (error) {
    res.status(400).json({ pesan: "Gagal. Mungkin email sudah terdaftar?" });
  }
});

3. DELETE (Menghapus User Berdasarkan ID)

Kita menangkap angka ID dari URL (req.params.id), lalu memusnahkannya. Ingat, parameter URL berbentuk String (Teks), jadi kita harus mengubahnya jadi Angka (parseInt) sebelum dilempar ke Prisma.

app.delete('/api/users/:id', async (req, res) => {
  try {
    const targetId = parseInt(req.params.id);
    
    await prisma.user.delete({
      where: { id: targetId }
    });
    res.json({ pesan: "User berhasil dihapus!" });
  } catch (error) {
    res.status(404).json({ pesan: "User tidak ditemukan!" });
  }
});

Aplikasi Sudah Hidup!

Kini, jika kamu memanggil POST lewat Postman untuk mendaftarkan Budi, lalu mematikan Server Node.js (Ctrl+C) dan menyalakannya lagi, data Budi tidak akan hilang. API-mu kini memiliki ingatan permanen berkat PostgreSQL!

Mau langsung pakai template?

Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.

Browse Templates