Prisma ORM
Next.js & Prisma

Penggunaan Next.js dan Prisma

Untuk menggunakan Prisma di dalam Next.js, kamu bisa mengimport client di dalam API route. Pastikan file prisma client prisma.js ada di direktori utils.

import { prisma } from "@/utils/prisma";

Penggunaan pada model User

Kemudian, kamu bisa menggunakan client tersebut untuk melakukan query ke database pada file route.js.

app
└── api
    └── v1
        └── auth
            └── register
                └── route.js

Contoh penggunaan pada model User:

route.js
import { prisma } from "@/utils/prisma";
 
export async function POST(req) {
  const { name, email, password } = await req.json();
 
  try {
    // Jika user sudah didaftarkan atau sudah ada di database
    const userExist = await prisma.user.findUnique({
      where: {
        email: email,
      },
    });
 
    if (userExist) {
      return Response.json(
        { message: "Data User Sudah Ada!" },
        // 400 atau 401
        { status: 400 }
      );
    }
 
    // Membuat data user/pengguna ke database
    const createUser = await prisma.user.create({
      data: {
        name,
        email,
        password,
      },
    });
 
    return Response.json(
      { data: createUser, message: "Data User Berhasil Dibuat!" },
      // 200 atau 201
      { status: 200 }
    );
  } catch (error) {
    console.log(error);
    return Response.json(
      { error, message: "Data User Gagal Dibuat!" },
      // 500 atau 501
      { status: 500 }
    );
  }
}

Tambahan menggunakan library bcrypt

Kamu juga dapat menginstall dan menambahkan library bcrypt (opens in a new tab) pada password.

Contoh script menggunakan bcrypt ada di bawah ini:

route.js
import prisma from "@/utils/prisma";
import bcrypt from "bcrypt";
 
export async function POST(req) {
  const { name, email, password } = await req.json();
 
  try {
    // Jika user sudah didaftarkan atau sudah ada di database
    const userExist = await prisma.user.findUnique({
      where: {
        email: email,
      },
    });
 
    if (userExist) {
      return Response.json(
        { message: "Data User Sudah Ada!" },
        // 400 atau 401
        { status: 400 }
      );
    }
 
    // Membuat kata sandi menjadi hash
    const hashedPassword = await bcrypt.hash(password, 10);
    // Membuat data user/pengguna ke database
    const createUser = await prisma.user.create({
      data: {
        name,
        email,
        password: hashedPassword,
      },
    });
 
    return Response.json(
      { data: createUser, message: "Data User Berhasil Dibuat!" },
      // 200 atau 201
      { status: 200 }
    );
  } catch (error) {
    console.log(error);
    return Response.json(
      { error, message: "Data User Gagal Dibuat!" },
      // 500 atau 501
      { status: 500 }
    );
  }
}

Boilerplate

Untuk boilerplate proyek Next.js, Prisma & Cloudflare R2, kamu dapat menyalin pada link repositori GitHub sebagai berikut:

devscale-nextjs-canary-r2 - github.com (opens in a new tab)