Tutorial RESTful API Express dan MongoDB #3: Menampilkan Data dari Database


Tutorial RESTful API Express dan MongoDB #3: Menampilkan Data dari Database

Halo teman-teman semuanya, pada artikel sebelumnya kita telah mempelajari cara menghubungkan Prisma dengan MongoDB menggunakan connection string. Kali ini, kita akan belajar bagaimana menampilkan lists data dari MongoDB di Express menggunakan Prisma.

Langkah 1 - Install Prisma Client

Prisma Client akan memudahkan kita dalam berinteraksi dengan database secara efisien dan intuitif. Silahkan jalankan perintah berikut ini di dalam terminal/CMD dan pastikan berada di dalam project Express.

npm install @prisma/client@5.20.0

Langkah 2 - Membuat Post Controller

Sekarang silahkan teman-teman buat folder baru dengan nama controllers dan di dalam folder tersebut silahkan buat file baru dengan nama PostController.js, kemudian masukkan kode berikut ini di dalamnya.

controllers/PostController.js

//import PrismaClient
const { PrismaClient } = require('@prisma/client');

//init prisma client
const prisma = new PrismaClient();

//function findPosts
const findPosts = async (req, res) => {
    try {

        //get all posts from database
        const posts = await prisma.post.findMany({
            select: {
                id: true,
                title: true,
                content: true,
                createdAt: true,
                updatedAt: true,
            },
            orderBy: {
                createdAt: "desc",
            },
        });

        //send response
        res.status(200).send({
            success: true,
            message: "Get All Posts Successfully",
            data: posts,
        });

    } catch (error) {
        res.status(500).send({
            success: false,
            message: "Internal server error",
        });
    }
};

//export function
module.exports = {
    findPosts,
}

Dari penambahan kode di atas, pertama kita import dan inisialisasi Prisma Client.

//import PrismaClient
const { PrismaClient } = require('@prisma/client');

//init prisma client
const prisma = new PrismaClient();

Kemudian kita membuat function baru dengan nama findPosts.

//function findPosts
const findPosts = async (req, res) => {

	//...
	
}

Di dalamnya, kita melakukan get data dari MongoDB menggunakan Prisma. Dan kita urutkan data yang ditampilkan berdasarkan yang terbaru.

//get all posts from database
const posts = await prisma.post.findMany({
    select: {
        id: true,
        title: true,
        content: true,
        createdAt: true,
        updatedAt: true,
    },
    orderBy: {
        createdAt: "desc",
    },
});

Setelah itu, kita return data di atas ke dalam format JSON.

//send response
res.status(200).send({
    success: true,
    message: "Get All Posts Successfully",
    data: posts,
});

Terakhir, jangan lupa untuk melakukan export function findPosts.

//export function
module.exports = {
    findPosts,
}

Langkah 3 - Membuat Route API Posts Index

Setelah berhasil membuat controller, maka kita akan lanjutkan membuat route untuk API posts index-nya.

Silahkan teman-teman buat folder baru dengan nama routes dan di dalamnya silahkan buat file baru dengan nama index.js, kemudian masukkan kode berikut ini di dalamnya.

routes/index.js

//import express
const express = require('express')

//init express router
const router = express.Router();

//import PostController
const PostController = require('../controllers/PostController');

//define route for posts
router.get('/posts', PostController.findPosts);

//export router
module.exports = router

Dari penambahan kode di atas, kita melakukan inisialisasi router dari Express.

//import express
const express = require('express')

//init express router
const router = express.Router();

Kemudian kita import controller PostController.

//import PostController
const PostController = require('../controllers/PostController');

Setelah itu, kita buat route baru dengan method GET dan path /posts, dimana handler-nya kita arahkan ke dalam PostController dengan function findPosts.

//define route for posts
router.get('/posts', PostController.findPosts);

Jangan lupa untuk melakukan export router-nya.

//export router
module.exports = router

Langkah 4 - Mendaftarkan Route

Agar route di atas bisa digunakan di dalam aplikasi, maka kita akan memanggilnya di dalam main file Express kita. Silahkan teman-teman buka file index.js, kemudian ubah kode-nya menjadi seperti berikut ini.

index.js

//import express
const express = require('express')

//import router
const router = require('./routes')

//init app
const app = express()

//define port
const port = 3000;

//route
app.get('/', (req, res) => {
  res.send('Hello World!')
})

//define routes
app.use('/api', router)

//start server
app.listen(port, () => {
    console.log(`Server started on port ${port}`);
})

Dari perubahan kode di atas, pertama kita import file routes yang sudah kita buat sebelumnya.

//import router
const router = require('./routes')

Kemudian kita gunakan di dalam Express menggunakan keyword use dan kita berikan basePath /api. Artinya nanti semua URL akan ditambahkan /api di depannya.

//define routes
app.use('/api', router)

Langkah 5 - Uji Coba Menampilkan Lists Data

Silahkan teman-teman buka aplikasi Postman, kemudian masukkan URL berikut ini http://localhost:3000/api/posts dan untuk method-nya silahkan pilih GET.

Jika sudah, silahkan klik Send dan jika berhasil maka kita akan mendapatkan response JSON yang kurang lebih seperti berikut ini.

{
    "success": true,
    "message": "Get All Posts Successfully",
    "data": []
}

Di atas, kita masih mendapatkan array kosong [] pada response data. Karena kita memang belum memili data apapun saat ini.

Kesimpulan

Pada artikel kali ini, kita semua telah belajar bagaimana cara install Prisma Client dan kemudian belajar menampilkan lists data dari MongoDB menggunakan Prisma di Express.

Pada artikel berikutnya, kita semua akan belajar bagaimana cara melakukan proses insert data ke dalam MongoDB menggunakan Prisma di Express.

Terima Kasih


Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami