Tutorial ExpressJS 11 : Penggunaan Database pada ExpressJS. Untuk menggunakan Mongo dengan mengekspresikan kita membutuhkan API klien untuk node.
![]() |
| Tutorial ExpressJS 11 : Penggunaan Database pada ExpressJS |
Pemodelan dokumen berarti, kita akan membuat Model (seperti kelas dalam pemrograman berorientasi dokumen), dan kemudian kita akan menghasilkan dokumen dengan menggunakan Model ini (seperti kita membuat dokumen kelas di OOP). Semua proses kami akan dilakukan pada "dokumen" ini, akhirnya kami akan menulis dokumen-dokumen ini di database kami.
Menyiapkan mongoose
Setelah menginstal Mongodb, mari kita pasang mongoose, dengan cara yang sama seperti kita memasang paket simpul kita yang lain:
npm install --save mongoose
Sebelum kita mulai menggunakan Mongoose, kita harus membuat database menggunakan tempurung mongo. Untuk membuat database baru, buka terminal anda dan masukkan "mongo". Sebuah cangkang Mongo akan dimulai, masukkan yang berikut,
use my_db
Database baru akan dibuat untuk Anda. Setiap kali Anda membuka shell mongo, itu akan default untuk "menguji" db dan Anda harus mengubah database Anda menggunakan commmand yang sama seperti di atas.
Untuk menggunakan Mongoose, kita akan memerlukannya di file index.js kita dan kemudian terhubung ke layanan mongod yang berjalan di mongodb://localhost
Untuk menggunakan Mongoose, kita akan memerlukannya di file index.js kita dan kemudian terhubung ke layanan mongod yang berjalan di mongodb://localhost
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/my_db');
Sekarang aplikasi kita terhubung ke database kami, mari kita membuat Model baru. Model ini akan bertindak sebagai kumpulan dalam database kita. Untuk membuat Model baru, gunakan kode berikut, sebelum menentukan rute apa pun:
var personSchema = mongoose.Schema({
name: String,
age: Number,
nationality: String
});
var Person = mongoose.model("Person", personSchema);
Kode di atas mendefinisikan skema untuk seseorang dan digunakan untuk membuat Model Personel mongoose.
Menyimpan dokumen
Sekarang kita akan membuat form html baru yang akan mendapatkan rincian seseorang dan menyimpannya ke database kita. Untuk membuat form, buat file view baru bernama person.pug dalam view directory dengan konten berikut:
html
head
title Person
body
form(action="/person", method="POST")
div
label(for="name") Name:
input(name="name")
br
div
label(for="age") Age:
input(name="age")
br
div
label(for="nationality") Nationality:
input(name="nationality")
br
button(type="submit") Create new person
Juga tambahkan rute get baru di index.js untuk membuat dokumen ini:app.get('/person', function(req, res){
res.render('person');
});
Pergi ke localhost:3000/person untuk memeriksa apakah formulir Anda ditampilkan dengan benar. Perhatikan bahwa ini hanya UI, belum bekerja. Beginilah bentuknya:
app.post('/person', function(req, res){
var personInfo = req.body; //Get the parsed information
if(!personInfo.name || !personInfo.age || !personInfo.nationality){
res.render('show_message', {message: "Sorry, you provided worng info", type: "error"});
} else {
var newPerson = new Person({
name: personInfo.name,
age: personInfo.age,
nationality: personInfo.nationality
});
newPerson.save(function(err, Person){
if(err)
res.render('show_message', {message: "Database error", type: "error"});
else
res.render('show_message', {message: "New person added", type: "success", person: personInfo});
});
}
});
Pada kode di atas, jika kita menerima field kosong atau tidak menerima field apapun, kita akan mengirimkan error response. Tetapi jika kita menerima dokumen yang terbentuk dengan baik, maka kita membuat dokumen baru dari Person model dan menyimpannya ke DB kita dengan menggunakan fungsi newPerson.save (). Ini didefinisikan dalam mongoose dan menerima callback sebagai argumen. Callback memiliki 2 argumen, error dan response. Ini akan menampilkan tampilan show_message, jadi kita perlu membuatnya juga.
Untuk menunjukkan tanggapan dari rute ini, kita juga perlu membuat tampilan show_message. Buat tampilan baru dengan kode berikut:
html
head
title Person
body
if(type == "error")
h3(style = "color:red") #{message}
else
h3 New person, name: #{person.name}, age: #{person.age} and nationality: #{person.nationality} added!
Tanggapan yang kami terima berhasil mengirimkan formulir (show_message.pug):
![]() |
Mengambil dokumen
Mongoose menyediakan banyak fungsi untuk mengambil dokumen, kita akan fokus pada 3 dari itu. Semua fungsi ini juga mengambil callback sebagai parameter terakhir, dan sama seperti fungsi save, argumen mereka adalah error dan response. Ketiga fungsinya adalah:
- Model.find (conditions, callback)
Fungsi ini menemukan semua dokumen yang sesuai dengan bidang dalam kondisi objek. Operator yang sama yang digunakan di Mongo juga bekerja di mongoose. Sebagai contoh,
Ini akan mengambil semua dokumen dari koleksi orang tersebut.Person.find(function(err, response){ console.log(response); });
Ini akan mengambil semua dokumen di mana nama feild adalah "Ayush" dan umurnya 20. Kita juga bisa memberikan proyeksi yang kita butuhkan, yaitu bidang yang kita butuhkan. Misalnya, jika kita hanya menginginkan nama orang-orang yang kewarganegaraannya "India", kita menggunakan:Person.find({name: "Ayush", age: 20}, function(err, response){ console.log(response); });Person.find({nationality: "Indian"}, "name", function(err, response){ console.log(response); }); - Model.findOne (conditions, callback)
Fungsi ini selalu mengambil satu dokumen yang paling relevan. Ini memiliki argumen yang sama persis seperti Model.find (). - Model.findById (id, callback)
Fungsi ini mengambil _id (didefinisikan oleh mongo) sebagai argumen pertama, sebuah string proyeksi opsional dan callback untuk menangani respons. Sebagai contoh,Person.findById("507f1f77bcf86cd799439011", function(err, response){ console.log(response); });
var express = require('express');
var app = express();
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/my_db');
var personSchema = mongoose.Schema({
name: String,
age: Number,
nationality: String
});
var Person = mongoose.model("Person", personSchema);
app.get('/people', function(req, res){
Person.find(function(err, response){
res.json(response);
});
});
app.listen(3000);
Memperbarui Dokumen
Mongoose menyediakan 3 fungsi untuk memperbarui dokumen.
- Model.update (condition, updates, callback)
Fungsi ini mengambil kondisi dan objek update sebagai masukan dan menerapkan perubahan pada semua dokumen yang sesuai dengan kondisi dalam koleksi. Misalnya, kode berikut akan memperbarui semua dokumen Orang untuk memiliki kewarganegaraan "Amerika":Person.update({age: 25}, {nationality: "American"}, function(err, response){ console.log(response); }); - Model.findOneAndUpdate(condition, updates, callback)
Itu persis apa yang dikatakan. Menemukan satu dokumen berdasarkan query dan update yang sesuai dengan argumen kedua. Ini juga mengambil callback sebagai argumen terakhir. Contoh berikutPerson.findOneAndUpdate({name: "Ayush"}, {age: 40}, function(err, response){ console.log(response); }); - Model.findByIdAndUpdate(id, updates, callback)
Fungsi ini memperbarui satu dokumen yang diidentifikasi oleh idnya. Sebagai contoh,Person.findByIdAndUpdate("507f1f77bcf86cd799439011", {name: "James"}, function(err, response){ console.log(response); });
var express = require('express');
var app = express();
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/my_db');
var personSchema = mongoose.Schema({
name: String,
age: Number,
nationality: String
});
var Person = mongoose.model("Person", personSchema);
app.put('/people/:id', function(req, res){
Person.findByIdAndUpdate(req.params.id, req.body, function(err, response){
if(err) res.json({message: "Error in updating person with id " + req.params.id});
res.json(response);
});
});
app.listen(3000);
Untuk menguji rute ini, masukkan yang berikut di terminal Anda (ganti id dengan id dari orang yang Anda buat):curl -X PUT --data "name=James&age=20&nationality=American" http://localhost:3000/people/507f1f77bcf86cd799439011
Ini akan memperbarui dokumen yang terkait dengan id yang ada di rute dengan rincian di atas.
Menghapus dokumen
Kami telah membahas Create, Read and Update, sekarang kita akan melihat bagaimana luwak dapat digunakan untuk Menghapus dokumen. Kami memiliki 3 fungsi di sini, persis seperti update.
- Model.remove(condition, [callback])
Fungsi ini mengambil objek kondisi sebagai masukan dan menghapus semua dokumen yang sesuai dengan kondisi. Misalnya, jika kita perlu menghapus semua orang berusia 20,Person.remove({age:20}); - Model.findOneAndRemove(condition, [callback])
Fungsi ini menghapus dokumen tunggal yang paling relevan sesuai dengan kondisi objek. Sebagai contoh,
Person.findOneAndRemove({name: "Ayush"});
This function removes a single document identified by its id. For example,
Person.findByIdAndRemove("507f1f77bcf86cd799439011");
var express = require('express');
var app = express();
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/my_db');
var personSchema = mongoose.Schema({
name: String,
age: Number,
nationality: String
});
var Person = mongoose.model("Person", personSchema);
app.delete('/people/:id', function(req, res){
Person.findByIdAndRemove(req.params.id, function(err, response){
if(err) res.json({message: "Error in deleting record id " + req.params.id});
else res.json({message: "Person with id " + req.params.id + " removed."});
});
});
app.listen(3000);
Untuk menguji ini, gunakan perintah curl berikut ini:
curl -X DELETE http://localhost:3000/people/507f1f77bcf86cd799439011
Ini akan menghapus orang yang diberi id yang menghasilkan pesan berikut:
{message: "Person with id 507f1f77bcf86cd799439011 removed."}
Ini membungkus bagaimana kita bisa membuat aplikasi CRUD sederhana menggunakan MongoDB, luwak dan Express.
Sumber : Tutorialspoint.com



COMMENTS