Reading MongoDB Document

Pada API yang kita develop ada 2 tipe read yang akan dilakukan, read semua data dan read by ID.

Untuk fungsi read all data (fungsi getAllTours), gunakan method find(). Lihat code berikut.

exports.getAllTours = async (req, res) => {
    try{
        const tours = await Tour.find();
        res.status(200).json({
            status: 'success',
            results: tours.length ,
            data: {
                tours: tours
            }
        });
    }catch (err){
        res.status(400).json({
            status: 'fail',
            message: 'Not Found'
        });
    }
}

Untuk read by ID (fungsi getTours), gunakan method findById().

exports.getTours = async (req, res) => {
    try{
        const tour = await Tour.findById(req.params.id);
        res.status(200).json({
            status: 'success',
            data: {
                tour: tour
            }
        });

    }catch(err){
        res.status(400).json({
            status: 'fail',
            message: 'No Data Found'
        });

    }

}

Lakukan testing dengan Postman, dan lihat hasilnya di cloud Atlas. Berikut isi lengkap file tourController.js

const Tour = require('./../models/tourModel');

exports.getAllTours = async (req, res) => {
    try{
        const tours = await Tour.find();
        res.status(200).json({
            status: 'success',
            results: tours.length ,
            data: {
                tours: tours
            }
        });
    }catch (err){
        res.status(400).json({
            status: 'fail',
            message: 'Not Found'
        });
    }
}

exports.getTours = async (req, res) => {
    try{
        const tour = await Tour.findById(req.params.id);
        res.status(200).json({
            status: 'success',
            data: {
                tour: tour
            }
        });

    }catch(err){
        res.status(400).json({
            status: 'fail',
            message: 'No Data Found'
        });

    }

}

exports.createTour = async (req, res) => {
    try{
        const newTour = await Tour.create(req.body);
        res.status(201).json({
            status: 'success',
            data: {
                tour: newTour
            }
        });
    } catch (err){
        res.status(400).json({
            status: 'fail',
            message: 'Error insert data'
        });
    }
}

exports.updateTour = (req, res)=> {
    res.status(201).json({
        status: 'success',
        data: {
            tour: 'data updated'
        }
    });
}

exports.deleteTour = (req, res)=> {
    res.status(204).json({
        status: 'success',
        data: null
    });
}

Note: karena menggunakan library mongoose, method yang digunakan adalah findById(). Bila menggunakan library native mongoDB, maka method yang digunakan adalah findOne({_id: req.params.id}).

Library mongoose memudahkan kita dalam develop program, namun tetap harus diperhatikan, perlu juga untuk mengetahui metoda dasar dari mongoDB.

Sharing is caring:

Leave a Comment