Jika pada modul sebelumnya kita membuat document dengan method save. Pada modul ini akan dibahas membuat document dengan method create.
Buka file tourController.js, ubah code untuk fungsi createTour menjadi seperti dibawah.
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'
});
}
}
Perhatikan, digunakan async await agar code tidak menyebabkan blocking. Untuk cek error, gunakan try-catch block. Untuk saat ini pesan error masih generic. Akan dibahas pada modul terpisah untuk melakukan error handling.
Buka aplikasi postman, lakukan testing POST new tour. Perhatikan pada data body postman, field data yang dikirim berbeda dengan model pada aplikasi. Field yang tidak ada pada model, akan diabaikan.

Buka juga cloud mongoDB, cek data yang dicreate.

Silakan bereksperimen dengan mengosongkan nama atau price. Apakah proses create berhasil atau gagal.
Berikut isi lengkap file tourController.js
const Tour = require('./../models/tourModel');
exports.getAllTours = (req, res) => {
res.status(200).json({
status: 'success',
// results: tours.length ,
// data: {
// tours: tours
// }
});
}
exports.getTours = (req, res) => {
const id = req.params.id * 1;
// const tour = tours.find(el => el.id === id);
// res.status(200).json({
// status: 'success',
// data: {
// tour: tour
// }
// });
}
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
});
}