Dari halaman beranda luwak:
Mongoose memberikan solusi langsung berbasis skema untuk memodelkan data aplikasi Anda dan mencakup casting tipe bawaan, validasi, pembuatan kueri, kait logika bisnis, dan banyak lagi, di luar kotak.
Luwak tidak dapat menyimpulkan dari kumpulan dokumen yang berpotensi unik sebagai skema. MongoDB tidak menerapkan skema pada dokumen yang disimpan dalam koleksi.
Jadi, Mongoose menambahkan lapisan pada driver asli NodeJS (di sini) yang menurut banyak orang lebih produktif. Ini bukan persyaratan untuk digunakan dengan MongoDB saat menggunakan Node.JS.
Luwak membutuhkan dua hal mendasar untuk bekerja:
- Skema ==ini mendefinisikan struktur dokumen (referensi). Anda dapat menambahkan validasi, metode baru, menambahkan properti virtual, menggunakan tipe data, membuat referensi ke koleksi (model) lain.
- Model ==ini adalah kelas yang kemudian digunakan pada saat dijalankan untuk mengekspresikan kueri terhadap koleksi (referensi). Definisi Skema digunakan untuk membangun Model.
Jadi, seperti yang Anda lihat pada contoh yang Anda tempel, ada Schema
anak kucing didefinisikan, dan kemudian Model
Kitten
dibuat. Apa yang menyenangkan tentang menggunakan skema dan model adalah bahwa Mongoose kemudian memberlakukan properti/bidang yang tersedia.
Anda hanya menentukan Schema
s dan Model
s sekali dalam aplikasi. Jadi, biasanya saat aplikasi dimulai, Anda harus menjalankan kode untuk mendefinisikannya, lalu menggunakan Model
instans sesuai kebutuhan sepanjang siklus hidup aplikasi.
Ada banyak lagi alasan Anda ingin menggunakan Mongoose secara potensial.
Anda benar sekali, Anda bisa menggunakan sesuatu yang lebih langsung, tanpa skema dengan menggunakan driver asli NodeJS. Sintaksnya akan mirip dengan yang Anda tunjukkan, tetapi sedikit lebih rumit:
MongoClient.connect("mongodb://localhost:27017/exampleDb", function(err, db) {
if(err) { return console.dir(err); }
var collection = db.collection('kittens');
collection.find().toArray(function(err, kittens) {
// here ...
});
});
Daripada yang sederhana:
Kitten.find(function(err, kittens) {
});
Plus, saat menggunakan Mongoose, Anda mungkin menemukan bahwa menulis kueri yang lebih kompleks lebih mudah untuk ditulis dan dibaca:
Kitten.find().where('name', 'Harold').exec(/*callback*/);
Saya sarankan membaca lebih banyak dokumentasi untuk mendapatkan pemahaman yang lebih baik tentang kerangka kerja dan apakah itu cocok dengan kebutuhan Anda. Sayangnya, dokumentasinya sedikit tersebar, tetapi jika Anda membaca subjudul Guide
judul, Anda akan memiliki banyak informasi bagus yang tersedia.