(Part 2) Membuat CRUD sederhana menggunakan Node Js, Express Js, Prisma, dan PostgreSQL
Wahyu Triono
Posted on November 13, 2022
Setelah kita berhasil mempersiapkan project dan tabel kita, selanjutnya kita akan membuat function CRUD yang nantinya digunakan pada router kita.
Membuat controller
Pertama yang akan kita lakukan adalah membuat controller yang akan kita letakan pada folder controllers, dan buat file dengan nama userController.js pada folder controllers
Membuat fungsi getAllData
- Setelah itu masukan kode berikut pada userController.js
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient
export const getAllData = async (req, res) => {
try {
const user = await prisma.user.findMany()
res.status(200).json({
status: 'Success',
data: user
})
} catch (error) {
res.status(500).json({
status: 'error',
message: error
})
}
}
fungsi getAllData akan melakukan proses mendapatkan semua data dengan menggunakan prisma.user.findMany(), dan mengirimkan response json dengan status 200
- Setelah itu kita buka routes/users.js, lalu ubah menjadi berikut
import express from 'express'
import { getAllData } from '../controllers/userController.js'
let router = express.Router()
router.get('/', getAllData)
export default router
yang pertama kita lakukan adalah melakukan import fungsi getAllData pada userController.js, lalu kita gunakan pada router.get('/', getAllData) yang berarti ketika kita mengunjungi route localhost:3000/users/ maka system akan menjalankan fungsi getAllData.
- Buka terminal lalu jalankan command berikut untuk menjalankan project
npm run dev
- Lalu buka postman atau insomnia, disini saya menggunakan insomnia. Dan buat request collection baru
- Setelah itu tambahkan HTTP Request
- Lalu atur seperti berikut
- Lalu tekan sent
Jika tampilan insomnia kalian sama dengan saya, maka fungsi get pertama anda berhasil dibuat, sehingga anda sudah menyelesaikan salah satu fungsi CRUD, yaitu Read.
Membuat fungsi create
- Kita buka kembali file userController.js, lalu tambahkan fungsi create seperti berikut:
export const getAllData = async (req, res) => {
try {
const user = await prisma.user.findMany()
res.status(200).json({
status: 'Success',
data: user
})
} catch (error) {
res.status(500).json({
status: 'error',
message: error
})
}
}
export const create = async (req, res) => {
try {
await prisma.user.create({
data: {
email: req.body.email,
name: req.body.name
}
})
res.status(200).json({
status: 'success',
message: 'Successfully insert user data'
})
} catch (error) {
res.status(500).json({
status: 'error',
message: error
})
}
}
- Lalu buka file routes/users.js, lalu tambahkan code
router.post('/', create)
dan pada bagian import userController.js pada file users.js tambahkan create
- Lalu pada insomnia atau postman, tambahkan HTTP Request baru dengan endpoint http://localhost:3000/users dengan method POST dan tambahkan request email dan name, lalu click send
- Jika tampilan postman seperti dibawah, maka fungsi create anda berhasil dan anda sudah menyelesaikan 2 fungsi CRUD yaitu Create dan Read
- Untuk memastikan data sudah masuk kedalam database, anda dapat membuka HTTP Request sebelumnya pada endpoint http://localhost:3000/users dengan method GET
Membuat fungsi update
- Buka file userController.js, lalu tambahkan fungsi update seperti berikut:
export const update = async (req, res) => {
const checkNumber = !isNaN(req.params.id)
if (!checkNumber) {
throw 'Please enter valid number'
}
const id = parseInt(req.params.id)
try {
await prisma.user.update({
where: {
id: id
},
data: {
email: req.body.email,
name: req.body.name
}
})
res.status(200).json({
status: 'success',
message: 'Successfully update user data'
})
} catch (error) {
res.status(500).json({
status: 'error',
message: error
})
}
}
- Setelah itu buka file routes/users.js, dan tambahkan endpoint baru seperti berikut:
router.put('/:id', update)
dan juga jangan lupa import fungsi update, agar tidak error. Sehingga keseluruhan code pada file users.js adalah seperti berikut:
Buka aplikasi insomnia atau postman, lalu tambahkan HTTP Request, dan masukan endpoint http://localhost/users/1 dengan method PUT, dan masukan response
Jika tampilan kalian sama seperti gambar dibawah, maka fungsi update dapat berjalan dengan normal
- Untuk melihat apakah data benar benar berhasil di update, kalian dapat membuka endpoint get sebelumnya, maka data sudah di ubah
Membuat fungsi deleteUser
- Ini merupakan fungsi terakhir kita. Buka file userController.js lalu tambahkan fungsi deleteUser seperti berikut:
export const deleteUser = async (req, res) => {
const checkNumber = !isNaN(req.params.id)
if (!checkNumber) {
throw 'Please enter valid number'
}
const id = parseInt(req.params.id)
try {
await prisma.user.delete({
where: {
id: id,
}
})
res.status(200).json({
status: 'success',
message: 'Successfully delete user data'
})
} catch (error) {
res.status(500).json({
status: 'error',
message: error
})
}
}
- Setelah itu, buka file routes/users.js dan import deleteUser function dan tambahkan baris baru dibawah endpoint terakhir, seperti berikut:
router.delete('/:id', deleteUser)
Sehingga total keseluruhan code file users.js adalah seperti berikut
- Setelah itu, coba jalankan endpoint http://localhost:3000/users/1 dengan method DELETE pada insomnia atau postman
- Jika tampilan insomnia kalian sama dengan gambar dibawah, maka fungsi deleteUser kalian berhasil
- Selanjutnya silahkan cek endpoint GET, apakah data user sudah terhapus atau belum.
Jika tampilan sama dengan gambar di atas, maka data user anda sudah berhasil di hapus.
Penutup
Terimakasih banyak karena sudah membaca dan mengikuti tutorial ini, kalian dapat mengunduh source code part 2 ini disini, atau jika anda ingin mengunduh seluruh source code, kalian dapat mengunduhnya disini
Posted on November 13, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 13, 2022
November 13, 2022