Prisma adalah next-generation ORM yang membantu developer bekerja dengan database secara efisien, aman, dan mudah. Prisma membuat proses query database menjadi lebih intuitif berkat Prisma Client yang dikompilasi otomatis dari schema yang kita definisikan. Pada artikel ini, kita akan membahas langkah-langkah instalasi Prisma Client pada aplikasi Express.js, mulai dari setup awal hingga siap digunakan.
1. Persiapan Lingkungan
Sebelum memulai, pastikan Anda sudah menginstal beberapa hal berikut:
- Node.js versi terbaru (minimal 14.x)
- npm atau yarn
- Database yang akan digunakan, misalnya PostgreSQL, MySQL, SQLite, SQL Server atau MongoDB (dengan Prisma Mongo connector)
Pada saat artikel ini dibuat, saya menggunakan Node js versi 22.19.0,
express$ node -v
v22.19.0
Setelah semuanya siap, buat folder project baru dan lakukan inisialisasi:
mkdir express
cd express
npm init -y
Selanjutnya install Express:
npm install express
Pada prisma client versi 7.0.1, kita akan menggunakan project typescript, karena jika menggunakan project js biasa akan bermasalah.
2. Setup Project typescript
install dev-depedensi yang diperlukan:
npm install @types/express @types/node tsx typescript --save-dev
Selanjutnya ketikan
npx tsc --init
Buka file tsconfig.json dan ubah menjadi seperti ini:
{
// Visit https://aka.ms/tsconfig to read more about this file
"compilerOptions": {
// File Layout
"rootDir": "./src",
"outDir": "./dist",
// Environment Settings
// See also https://aka.ms/tsconfig/module
"module": "esnext",
"target": "es2023",
"types": [],
// For nodejs:
// "lib": ["esnext"],
// "types": ["node"],
// and npm install -D @types/node
// Other Outputs
"sourceMap": true,
"declaration": true,
"declarationMap": true,
// Stricter Typechecking Options
"noUncheckedIndexedAccess": true,
"exactOptionalPropertyTypes": true,
// Style Options
// "noImplicitReturns": true,
// "noImplicitOverride": true,
// "noUnusedLocals": true,
// "noUnusedParameters": true,
// "noFallthroughCasesInSwitch": true,
// "noPropertyAccessFromIndexSignature": true,
// Recommended Options
"strict": true,
"jsx": "react-jsx",
"verbatimModuleSyntax": true,
"isolatedModules": true,
"noUncheckedSideEffectImports": true,
"moduleDetection": "force",
"skipLibCheck": true,
"moduleResolution": "node",
"esModuleInterop": true,
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"],
}
Kemudian ubah juga file package.json, tambahkan type module
"type": "module",
"keywords": [],
3. Menginstal Prisma dan Setup Awal
Prisma terdiri dari dua paket utama: Prisma CLI dan Prisma Client. CLI digunakan untuk mengelola schema, migrasi, dan utility lainnya, sedangkan Prisma Client digunakan di dalam kode Express.
Install Prisma CLI dan yang lainya sebagai dev-depedensi:
npm install prisma --save-dev
Install juga depedensi yang lain
npm install @prisma/adapter-mariadb @prisma/client dotenv
Setelah itu lakukan inisialisasi Prisma:
npx prisma init
Command ini akan menghasilkan folder baru bernama prisma/ yang berisi file schema.prisma. Selain itu Prisma akan membuat file .env yang digunakan untuk menyimpan variabel lingkungan, salah satunya koneksi database.
berikut versi prisma yang saya pakai:
express$ npx prisma -v
Loaded Prisma config from prisma.config.ts.
Prisma schema loaded from prisma/schema.prisma
prisma : 7.0.1
@prisma/client : 7.0.1
Operating System : linux
Architecture : x64
Node.js : v22.19.0
TypeScript : 5.9.3
3. Mengatur Koneksi Database
Buka file .env dan sesuaikan DATABASE_URL dengan database yang akan digunakan. Contoh jika menggunakan Mysql:
DATABASE_URL="mysql://root:123@localhost:3306/belajar"
contoh diatas menggunakan database mysql, username=root, dan password mysqlnya adalah 123, dan nama databasenya adalah belajar, sesuaikan dengan pengaturan database kalian pada komputer atau laptop.
4. Membuat Schema Prisma
Buka file prisma/schema.prisma. Pastikan isinya seperti berikut:
generator client {
provider = "prisma-client"
output = "../src/generated/prisma"
}
datasource db {
provider = "mysql"
}
jika kalian menggunakan text editor Visual Studio Code, dan melihat baris merah pada bagian datasource db{provider="mysql"}, biarkan saja, karena pada versi sebelumnya ada tambahan url. itu bukan berarti error, itu hanya tatacara penulisan yang dianggap salah oleh text editornya.
Selanjutnya, Contoh sederhana untuk membuat model User:
generator client {
provider = "prisma-client"
output = "../src/generated/prisma"
}
datasource db {
provider = "mysql"
}
model users {
id Int @id @default(autoincrement())
name String
email String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
Setelah membuat schema, jalankan migrasi:
npx prisma migrate dev --name create_table_users
maka akan membuat sebuat folder didalam prisma/migrations, dan membuat table pada database dengan nama users.
Jika Error
Loaded Prisma config from prisma.config.ts.
Prisma schema loaded from prisma/schema.prisma
Datasource "db": MySQL database "belajar" at "localhost:3306"
- Drift detected: Your database schema is not in sync with your migration history.
The following is a summary of the differences between the expected database schema given your migrations files, and the actual schema of the database.
It should be understood as the set of changes to get from the expected schema to the actual schema.
[+] Added tables
- users
- The following migration(s) are applied to the database but missing from the local migrations directory: 20251126045630_create_table_users
We need to reset the MySQL database "belajar" at "localhost:3306"
You may use prisma migrate reset to drop the development database.
All data will be lost.
Jalankan npx prisma migrate reset, dan ulangi lagi
npx prisma migrate dev --name create_table_users
Setelah itu jalankan prisma generate
npx prisma generate
5. Menggunakan Prisma Client pada Express.js
Buat folder src dan buat file didalam folder src index.ts sebagai server Express:
import "dotenv/config";
import express from 'express';
import { PrismaMariaDb } from '@prisma/adapter-mariadb';
import { PrismaClient } from "./generated/prisma/client";
const app = express();
const adapter = new PrismaMariaDb({
host: "localhost",
user: "root",
password: "123",
database: "belajar",
connectionLimit: 5
});
const prisma = new PrismaClient({ adapter });
app.use(express.json());
// Route: menambahkan user
app.get('/add-user', async (req, res) => {
const name = "Naruto Uzumaki";
const email = "naruto@konoha.com";
const user = await prisma.users.create({
data: { name, email }
});
res.json(user);
});
// Route: mendapatkan semua user
app.get('/user', async (req, res) => {
const users = await prisma.users.findMany();
res.json(users);
});
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
Aplikasi Anda sekarang sudah terhubung dengan Prisma dan siap melakukan query database dengan sintaks yang clean dan modern.
jalankan server dengan perintah pada terminal :
npx tsx src/index.ts
akses browser dengan localhost:3000/add-user, untuk menambah user tetapi jangan di akses lebih 1 kali karna akan error, ini disebabkan karna email pada database harus unique tidak boleh sama jadi solusinya ubah dulu emailnya baru jalankan lagi routenya, untuk melihat list user akses dengan localhost:3000/user
Kesimpulan
Instalasi Prisma Client pada Express.js tidaklah sulit. Dengan beberapa langkah mulai dari inisialisasi project, setup schema, migrasi, hingga penggunaan Prisma Client di dalam routing Express, Anda bisa mendapatkan ORM yang powerful dan mudah digunakan. Prisma memberikan banyak keuntungan seperti pengetikan yang kuat (type safety), auto-completion, dan struktur query yang rapi sehingga meningkatkan produktivitas developer.
Dengan mengikuti panduan di atas, sekarang Anda sudah dapat membangun aplikasi Express dengan akses database yang lebih efisien menggunakan Prisma.
Untuk melihat artikel yang lain, bisa klik Disini.

No comments:
Post a Comment