type
Post
status
Published
date
May 6, 2024
slug
prisma-part-2
summary
tags
prisma
ORM
category
article
password
icon
URL
Halo teman-teman.. kali ini ane mau lanjutin pembahasan sebelumnya tentang ORM terkhusus prisma, mulai dari definisi dan fungsi dari prisma dan ORM itu sendiri. Buat yang tertarik silakan cek linknya ada di sini.
kali ini kita lanjut pembahasan kita tentang prisma. klo kemaren kita bahas tentang pengertian, kelebihan, fungsi, dll, sekarang kita langsung aja masuk ke praktek pembuatan aplikasi dengan prisma. Kali ini saya mau ngasih penjelasan tentang bagaimana cara memulai membuat aplikasi Nextjs(14 App Router) yang terintegrasi dengan Prisma ORM.
Prerequisites
- Pastikan Anda memiliki Node.js, npm terinstal di sistem Anda. untuk lebih lengkapnya bisa teman-teman baca di sini.
Buat Project Nextjs dan Setup Prisma ORM
- Buat project Nextjs(14) baru dengan perintah berikut
npx create-next-app nextjs-prisma cd nextjs-prisma
Selanjutnya lakukan setup sesuai dengan selera teman-teman.
create-next-app@14.2.3 Ok to proceed? (y) ✔ What is your project named? … nextjs-prisma ✔ Would you like to use TypeScript? … No / Yes ✔ Would you like to use ESLint? … No / Yes ✔ Would you like to use Tailwind CSS? … No / Yes ✔ Would you like to use `src/` directory? … No / Yes ✔ Would you like to use App Router? (recommended) … No / Yes ? Would you like to customize the default import alias (@/*)? › No / Yes
- Install Prisma di project Nextjs sebagai dependency di mode development dengan perintah berikut
npm install prisma --save-dev
jangan lupa untuk menginstall
@prisma/client
untuk melakukan query untuk mengakses data di database tanpa menggunakan query sql.npm install @prisma/client
kemudian inisiasi project kita untuk menggunakan prisma dengan perintah berikut
npx prisma init --datasource-provider sqlite
perintah tersebut membuat folder baru bernama
prisma
dan berisi file configurasi dan schema bernama prisma.schema
, yang nantinya akan teman-teman ubah untuk kebutuhan project teman-teman.- Edit file
prisma.schema
sesuai kebutuhan teman-teman atau isi dengan file konfigurasi berikut
generator client { provider = "prisma-client-js" } datasource db { provider = "sqlite" url = "file:./dev.db" } 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 }
Models di
prisma.schema
memiliki dua fungsi utama; Mewakili tabel dalam database yang mendasarinya; dan Berfungsi sebagai landasan untuk API prisma client yang dihasilkan- Jalankan migrasi untuk membuat tabel database dengan perintah berikut
npx prisma migrate dev --name init
Sebelumnya teman-teman hanya memiliki schema database tanpa database, dengan perintah tersebut teman-teman membuat database sqlite dan tabel
User
dan Post
yang direpresentasikan oleh model schema yang sebelumnya kita buat. untuk mengecek apakah database sudah terbuat atau belum silahakan lakukan perintah berikutnpx prisma studio
buka http://localhost:5555 di browser, jika database sudah terbuat
maka akan menuju ke halaman prisma studio seperti gambar berikut

Saat ini aplikasi kita sudah terhubung dengan database sqlite yang dihubungkan melalui Prisma ORM, selanjutnya kita akan melakukan fetching data dari database
- Buat file untuk mengambil data dari database
di dalam
/src
folder buat folder bernama utils
di dalamnya kita buat file bernama db.ts
dan isi dengan kode berikut ini// src/utils/db.ts import { PrismaClient } from '@prisma/client' export const db = new PrismaClient()
- lalu buat api route
// /src/app/api/user.ts import { NextRequest, NextResponse } from "next/server" import { zUser } from "../type" import bcryptjs from "bcryptjs" import { prisma } from "@/global/db" export async function POST(req: NextRequest) { const data = await req.json() const parsedData = zUser.parse(data) const hashedPassword = bcryptjs.hashSync(parsedData.password, 8) try { const user = await prisma.user.create({ data: { email: parsedData.email, name: parsedData.name, password: hashedPassword, }, }) return new NextResponse(`{id: ${user.id}, name: ${user.name}}`, { status: 201 }) } catch (error) { return new NextResponse(`error: `, { status: 500 }) } }

- Author:nidzammst
- URL:https://nidzammst.vercel.app/article/prisma-part-2
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts