DEV Community

Cover image for (Part 2) Membuat CRUD sederhana menggunakan Node Js, Express Js, Prisma, dan PostgreSQL
Wahyu Triono
Wahyu Triono

Posted on

(Part 2) Membuat CRUD sederhana menggunakan Node Js, Express Js, Prisma, dan PostgreSQL

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
        })
    }
}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode
  • Lalu buka postman atau insomnia, disini saya menggunakan insomnia. Dan buat request collection baru

insomnia

  • Setelah itu tambahkan HTTP Request

Insomnia GET

  • Lalu atur seperti berikut

Get insomnia

  • Lalu tekan sent

Fungsi get
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
        })
    }
}
Enter fullscreen mode Exit fullscreen mode
  • Lalu buka file routes/users.js, lalu tambahkan code
router.post('/', create)
Enter fullscreen mode Exit fullscreen mode

dan pada bagian import userController.js pada file users.js tambahkan create

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

Insomnia create

  • Untuk memastikan data sudah masuk kedalam database, anda dapat membuka HTTP Request sebelumnya pada endpoint http://localhost:3000/users dengan method GET

Insomnia check user

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
        })
    }
}
Enter fullscreen mode Exit fullscreen mode
  • Setelah itu buka file routes/users.js, dan tambahkan endpoint baru seperti berikut:
router.put('/:id', update)
Enter fullscreen mode Exit fullscreen mode

dan juga jangan lupa import fungsi update, agar tidak error. Sehingga keseluruhan code pada file users.js adalah seperti berikut:

update func

  • 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

update test

  • Untuk melihat apakah data benar benar berhasil di update, kalian dapat membuka endpoint get sebelumnya, maka data sudah di ubah

updated user

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
        })
    }
}
Enter fullscreen mode Exit fullscreen mode
  • Setelah itu, buka file routes/users.js dan import deleteUser function dan tambahkan baris baru dibawah endpoint terakhir, seperti berikut:
router.delete('/:id', deleteUser)
Enter fullscreen mode Exit fullscreen mode

Sehingga total keseluruhan code file users.js adalah seperti berikut

user full

  • 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

success delete

  • Selanjutnya silahkan cek endpoint GET, apakah data user sudah terhapus atau belum.

success delete 2
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

Top comments (0)