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: