Sebagai pegiat IT mungkin kita sudah mengenal atau setidaknya mendengar istilah MySQL. Yaps, Sebuah database relasional populer yang mengusung konsep relasi tradisonal (RDBMS/SQL). Nah, selain RDBMS/SQL juga ada konsep baru yaitu NoSQL. NoSQL merupakan konsep penyimpanan database dinamis yang tidak terikat pada relasi-relasi tabel yang kaku seperti RDBMS. Selain lebih scalable, NoSQL juga memiliki performa pengaksesan yang lebih cepat. Hal-hal itulah yang membuat NoSQL menjadi semakin populer beberapa tahun belakangan. Show
Salah satu jenis NoSQL yang banyak digunakan dan bersumber terbuka yaitu MongoDB. Dengan sistem penyimpanan dalam format dokumen Binary JSON (BSON) membuat MongoDB sangat cocok untuk dipasangkan dengan Node.js. Akan menjadi tantangan yang menarik, jika kita selama ini terbiasa dengan konsep SQL dan ingin memahami konsep NoSQL pada MongoDB. Dibutuhkan cara pandang baru, mengingat dua konsep ini memiliki cara berbeda dalam merepresentasikan data. Mapping Tabel, Kolom dan BarisJika pada RDBMS kita mengenal tabel, maka di mongoDB ada istilah collection. Di dalam collection ada bentuk dokumen-dokumen yang sepadan dengan baris pada tabel. Dan nama-nama kolom pada tabel bisa dijumpai sebagai field di MongoDB. https://cdn.tutsplus.com/net/uploads/2013/11/Figure-6-Mapping-Chart.pngUntuk lebih jelasnya mari kita lihat bentuk perubahan bentuk data dari SQL ke NoSQL. Bentuk data di MySQLBentuk data di MongoDBDynamic SchemaYaps, MongoDB memungkinkan kita untuk membuat satu collection yang memiliki struktur yang berbeda antar dokumen. Perbedaan disini bisa terjadi pada nama field, tipe data, maupun jumlah field yang ada (unstructured data). Tentu saja konsep ini berbeda dengan konsep RDBMS yang mengharuskan kita mendefinisikan struktur dan relasi terlebih dahulu, sehingga struktur tiap baris dalam tabel akan sama (structured data). Untuk lebih jelasnya bisa dilihat contoh pada dua bentuk dokumen pada satu collection dibawah ini. Struktur dokumen yang berbeda dalam satu collectionDari gambar diatas bisa dilihat bahwa pada dokumen pertama terdapat field Kita mengenal bentuk relasi pada RDBMS menggunakan primary dan foreign key yang terhubung secara langsung. Sedangkan di MongoDB ada dua pendekatan untuk membentuk relasi yaitu Referenced dan Embedded Document. Referenced DocumentDi dalam Referenced Document, satu collection akan menyimpan Embedded Document Daripada kita menggunakan banyak collection terpisah yang berelasi, kita bisa menyisipkan data-data tersebut di dalam satu dokumen. Misalnya saja seperti gambar dibawah, Pendekatan mana yang dipilih?Tergantung pada banyak kondisi dan kebutuhan. Jika data yang kita sisipkan diprediksi akan tumbuh menjadi besar maka lebih baik untuk menggunakan Referenced Document, seperti data pemesanan diatas. Embedded document digunakan jika data yang disisipkan tidak berpotensi untuk menjadi besar. Perhatikan juga ukuran dari dokumen, karena MongoDB tidak mengijinkan sebuah dokumen berukuran lebih dari dan kedalaman dari Embedded Document juga tidak bisa lebih dari 100. TambahanSalah satu aplikasi client cukup membantu mengelola data di MongoDB yaitu Robomongo. Selain bersumber terbuka juga mendukung di sistem operasi GNU/Linux, Mac, dan Windows. Dan jika membutuhkan layanan hosting MongoDB, kita bisa menggunakan layanan di MLab. Tersedia kapasitas 500 MB gratis, lumayan bisa digunakan untuk belajar atau untuk pengembangan aplikasi kita. Mongoose adalah sebuah framework JavaScript yang umumnya digunakan pada aplikasi Node.js dengan database MongoDB. Pada artikel ini, Saya akan memperkenalkan kepada Anda tentang Mongoose dan MongoDB, dan yang lebih penting dimana teknologi ini sesuai dengan aplikasi Anda. Apa itu MongoDB?Mari memulai dengan MongoDB. MongoDB adalah sebuah database yang menyimpan data Anda sebagai dokumen. Kebanyakan dokumen ini mirip seperti struktur JSON: 1 {
2 firstName: "Jamie", 3 lastName: "Munro" 4 }
Sebuah dokumen kemudian diletakan dalam koleksi. Sebagai contoh, contoh dokumen diatas mendefinisikan sebuah obyek }
55. Obyek }
55 ini kemudian akan secara khusus menjadi bagian dari sebuah koleksi yang disebut }
57.Salah satu dari faktor penentu MongoDB adalah fleksibilitasnya dalam masalah struktur. Meskipun pada contoh pertama, obyek }
55 berisikan sebuah properti }
59 dan }
60, properti ini tidak dibutuhkan di setiap dokumen }
55 yang merupakan bagian dari }
57 collection. Inilah yang membuat MongoDB sangat berbeda dari database SQL seperti MySQL atau Microsoft SQL Server yang membutuhkan skema database yang sudah terdefinisikan pada setiap obyek yang disimpan.Kemampuan untuk membuat obyek dinamis yang disimpan sebagai dokumen pada database adalah tempat dimana Mongoose bekerja. Apa itu Mongoose?Mongoose adalah sebuah Object Document Mapper (ODM). Ini berarti Mongoose mengizinkan Anda untuk mendefinisikan obyek dengan skema yang benar-benar diketik yang dipetakan ke sebuah dokumen MongoDB. Mongoose menyediakan jumlah fungsionalitas yang luar biasa yang berkaitan dengan pembuatan dan pengerjaan skema. Mongoose saat ini memiliki delapan tipe skema dimana propertinya disimpan seperti saat berada di MongoDB. Diantaranya:
Setiap tipe data memungkinkan Anda untuk menentukan:
Selanjutnya untuk opsi umum ini, tipe data tertentu memungkinkan Anda untuk menyesuaikan lebih lanjut bagaimana data disimpan dan diambil dari database. Sebagai contoh, sebuah tipe data }
63 juga memungkinkan Anda untuk menentukan pilihan tambahan sebagai berikut:
Properti }
64 dan }
65 keduanya mendukung penentuan nilai minimal dan maksimal yang diizinkan untuk field tersebut.Sebagian besar dari delapan jenis data yang diizinkan seharusnya cukup familiar untuk Anda. Namun, ada beberapa pengecualian yang mungkin menjadi pengecualian bagi Anda, seperti }
66, }
67, }
68, dan }
69.Tipe data }
66 memungkinkan Anda untuk menyipan data biner. Contoh yang umum untuk data biner seperti gambar atau file encodem seperti dokumen PDF.Tipe data }
67 mengubah properti menjadi field "dapat menjadi apa saja". Field ini menyerupai berapa banyak pengembang yang menggunakan MongoDB karena tidak ada struktur yang jelas. Berhati-hatilah menggunakan tipe data ini karena tipe ini kehilangan banyak fitur hebat yang disediakan oleh Mongoose, seperti validasi data dan pendeteksi perubahan entitas untuk dapat mengetahui secara otomatis dalam memperbarui properti saat menyimpan.Tipe data }
68 umumnya menentukan sebuah tautan ke dokumen yang lain di dalam database Anda. Sebagai contoh, jika anda memiliki sebuah koleksi buku dan penulis, dokumen buku kemungkinan berisi sebuah properti }
68 yang menunjuk ke penulis tertentu dari dokumen.Tipe data }
69 memungkinkan anda untuk menyimpan array yang seperti JavaScript. Dengan sebuah tipe data Array, anda dapat melakukan operasi array Javascript yang umum, seperti push, pop, shift, slice, dll.Rekap SingkatSebelum melanjutkan dan menghasilkan beberapa kode, Saya ingin mengulang apa yang baru saja kita pelajari. MongoDB adalah database yang memungkinkan Anda menyimpan dokumen dengan struktur dinamis. Dokumen-dokumen ini disimpan di dalam koleksi. Mongoose adalah pustaka JavaScript yang memungkinkan Anda menentukan skema dengan data yang strongly-typed. Setelah skema didefinisikan, Mongoose memungkinkan Anda membuat Model berdasarkan skema tertentu. Model Mongoose kemudian dipetakan ke Dokumen MongoDB melalui definisi skema Model. Setelah Anda menentukan skema dan model Anda, Mongoose berisi banyak fungsi berbeda yang memungkinkan Anda untuk memvalidasi, menyimpan, menghapus, dan men-query data Anda menggunakan fungsi MongoDB yang umum. Saya akan membicarakan hal ini lebih dengan contoh kode yang konkrit untuk diikuti. Menginstall MongoDBSebelum kita dapat memulai membuat skema dan model Mongoose kita, MongoDB harus terinstal dan terkonfigurasi. Saya menyarankan untuk mengunjungi . Ada beberapa pilihan berbeda yang tersedia untuk menginstall. Saya telah terhubung ke Server Community. Hal ini memungkinkan Anda menginstal versi tertentu ke sistem operasi Anda. MongoDB juga menawarkan Server Enterprise Server dan instalasi bantuan cloud. Karena seluruh buku bisa ditulis saat menginstal, menyetel, dan memantau MongoDB, saya akan tetap dengan Server Community. Setelah anda selesai mendownload dna menginstall MongoDB untuk sistem operasi pilihan anda, Anda harus memulai database. Daripada membuat wheel baru, Saya menyarankan anda mengunjungi dokumentasi MongoDB's tentang bagaimana menginstall MongoDB Edisi Community. Saya akan menunggu di sini saat Anda mengkonfigurasi MongoDB. Bila sudah siap, kita bisa melanjutkan untuk menyiapkan Mongoose untuk terhubung ke database MongoDB yang baru diinstal. Menyiapkan MongooseMongoose adalah framework JavaScript, dan saya akan menggunakannya dalam aplikasi Node.js. Jika Anda sudah menginstal Node.js, Anda dapat melanjutkan ke langkah berikutnya. Jika Anda tidak menginstal Node.js, saya sarankan Anda memulai dengan mengunjungi Halaman Download Node.js dan pilih installer untuk sistem operasi Anda. Setelah Node.js telah disetel dan siap digunakan, Saya akan membuat aplikasi baru dan kemudian menginstal Mongoose NPM Package. Dengan command prompt yang disetel ke aplikasi yang Anda inginkan untuk diinstall, Anda dapat menjalankan perintah berikut: 1 mkdir mongoose_basics
2 {
13 {
3Untuk inisialisasi aplikasi saya, saya biarkan semuanya ke nilai default. Sekarang saya akan menginstal paket mongoose sebagai berikut: 1 {
5Dengan semua prasyarat yang dikonfigurasi, mari kita hubungkan ke database MongoDB. Saya telah menempatkan kode berikut di dalam file index.js karena saya memilihnya sebagai titik awal untuk aplikasi saya: 1 {
72 3 20 Baris pertama termasuk pustaka }
75. Kemudian, Saya membuka sebuah koneksi ke database yang saya sebut }
76 menggunakan fungsi }
77.Fungsi }
77 menerima dua pilihan parameter lainnya. Parameter kedua adalah sebuah pilihan obyek dimana kamu dapan mendefinisikan hal-hal seperti username dan password jika diperlukan. Parameter yang ketiga, yang dapa juga menjadi parameter kedua jika anda tida mempunyai pilihan, adalah fungsi callback setelah mencoba untuk menghubungkan. Fungsi callback dapat digunakan dalam satu dari dua cara:1 22 2 3 25 4 27 28 29 firstName: "Jamie",0 firstName: "Jamie",1 firstName: "Jamie",2 firstName: "Jamie",3 firstName: "Jamie",4 firstName: "Jamie",5 firstName: "Jamie",6 firstName: "Jamie",7 firstName: "Jamie",8 firstName: "Jamie",9 30 31 32 33 Untuk menghindari pengantar potensial pada JavaScript Promises, Saya akan menggunakan cara pertama. Di bawah ini adalah file index.js yang telah diupdate: 1 {
72 3 38 4 27 lastName: "Munro"1 29 firstName: "Jamie",0 lastName: "Munro"4 firstName: "Jamie",2 firstName: "Jamie",3 28 Jika error terjadi saat menghubungkan ke database, exception akan dilempar dan proses selanjutnya akan dihentikan. Saat tidak terjadi error, Saya akan mengirim pesan sudah login ke console. Mongoose sekarang telah disetel dan dihubungkan ke database yang disebut }
76. Koneksi MongoDB saya tidak menggunakan username, password, atau port custom. Jika anda ingin menyetel pilihan ini atau pilihan yang lain selama menghubungkan, Saya menyarankan anda mengunjungi Mongoose Documentation on connecting. Dokumentasi ini menyediakan penjelasan terperinci dari berbagai pilihan yang tersedia termasuk bagaimana membuat multiple connection, connection pooling, replika, dll.Setelah koneksi telah sukses, mari berpindah ke pendefinisian Skema Mongoose. Mendefinisikan Skema MongooseSaat pendahuluan, Saya menunjukan sebuah obyek }
55 yang berisi dua properti: }
59 dan }
60. Pada contoh berikut, saya telah menerjemahkan dokumen tersebut ke dalam Skema Mongoose:1 lastName: "Munro"9 2 41 3 43 4 28 Ini adalah Skema yang sangat mendasar yang hanya berisi dua properti tanpa ada attribut yang terkait dengannya. Mari memperluas contoh ini dengan mengkonversi properti first dan last name menjadi obyek child dari properti }
83. Properti }
83 akan meliputi kedua dari first dan last name. Saya juga akan menambahkan sebuah properti }
85 yang bertipe }
65.1 lastName: "Munro"9 2 49 3 }
14 }
327 }
529 }
7firstName: "Jamie",0 28 Seperti yang anda lihat, Mongoose memungkinkan saya untuk membuat skema yang sangat fleksibel dengan banyak kombinasi memungkinkan yang berbeda tentang bagaimana saya bisa mengorganisir data Saya. Pada contoh selanjutnya, Saya akan membuat dua skema baru yang akan mendemonstrasikan bagaimana cara membuat relasi ke skema yang lain: }
87 dan }
88. Skema }
88 berisi sebuah referensi ke skema }
87.1 11 2 13 3 49 4 17 27 19 29 mkdir mongoose_basics
1firstName: "Jamie",0 mkdir mongoose_basics
3firstName: "Jamie",2 mkdir mongoose_basics
5firstName: "Jamie",3 mkdir mongoose_basics
7firstName: "Jamie",5 mkdir mongoose_basics
9firstName: "Jamie",6 {
01firstName: "Jamie",8 {
03firstName: "Jamie",9 {
0531 {
0732 {
09{
1028 Contoh diatas adalah skema }
87 yang diperluas berdasarkan konsep dari skema }
55 yang saya ciptakan pada contoh sebelumnya. Untuk menghubungkan antara Author dan Book, Properti pertama dari skema }
87 adalah sebuah properti }
94 yang merupakan tipe skema }
68. }
94 adalah sintaks yang umum untuk membuat primary key pada Mongoose dan MongoDB. Kemudian, seperti skema }
55, Saya telah mendefinisikan sebuah properti }
83 yang berisikan first dan last name author.Perluasan dari skema }
55 schema, }
87 berisi beberapa tipe skema }
63 yang lain. Saya juda sudah menambahkan sebuah tipe skema }
66 yang dapat menaruh gambar profil pengarangnya. Properti terakhir memegang tanggal pembuatan penulis; Namun, Anda mungkin memperhatikannya dibuat sedikit berbeda karena telah ditetapkan nilai default "now". Ketika seorang penulis berada pada database, properti ini akan diset ke tanggal / waktu sekarang.Untuk melengkapi contoh skema, mari membuat skema }
88 schema yang berisi sebuah referesi ke penulis menggunakan tipe skema }
68:1 {
132 13 3 {
174 {
1927 {
2129 {
23firstName: "Jamie",0 {
25firstName: "Jamie",2 {
27firstName: "Jamie",3 {
29firstName: "Jamie",5 }
5firstName: "Jamie",6 {
33firstName: "Jamie",8 {
35firstName: "Jamie",9 {
3731 {
3932 {
41{
10{
43{
44{
45{
46{
47{
48{
49{
50{
51{
52{
53{
54{
03{
56{
05{
58{
07{
60{
09{
6228 Skema }
88 berisi beberapa properti dari tipe }
63. Seperti disebutkan diatas, skema itu berisikan sebuah referensi ke skema }
87. Untuk mendemonstrasikan definisi skema yang powerful secara lebih jauh, skema }
88 juga berisikan sebuah }
69 dari 110. Setiap rating terdiri atas sebuah 111, 112, 113, dan properti date }
85.Mongoose memungkinkan anda kelenturan dalam membuat skema dengan drferesi ke skema yang lain atau, sebagaimana contoh diatas dengan properti 110, hal ini memungkinkan anda untuk membuat sebuah }
69 dari properti child yang dapat terisi dalam skema relasi (seperti book ke author) atau dalam barisan sebagaimana contoh diatas (dengan book untuk sebuah rating }
69).Membuat dan Menyimpan Model MongooseSetelah skema }
87 dan }
88 mendemonstrasikan kelenturan skema Mongoose, Saya akan lanjut menggunakan skema tersebut dan memperoleh sebuah model 120 dan 121 darinya. 1 {
652 3 {
68Sebuah Model Mongoose, saat disimpan, membuat sebuah dokumen di MongoDB dengan properti yang didefinisikan oleh skema asal. Untuk menunjukan pembuatan dan penyimpanan sebuah obyek, pada contoh yang selanjutnya, Saya akan membuat beberapa obyek: Sebuah Model 120 dan beberapa model 121. Setelah dibuat, obyek ini akan disimpan ke MongoDB menggunakan metode 124 dari Model. 1 {
702 {
723 49 4 {
7627 {
7829 }
5firstName: "Jamie",0 {
82firstName: "Jamie",2 {
84firstName: "Jamie",3 {
86firstName: "Jamie",5 {
88firstName: "Jamie",6 firstName: "Jamie",8 {
91firstName: "Jamie",9 {
9331 {
9532 {
97{
10{
95{
44201 {
46203 {
48205 {
50207 {
52209 {
54211 {
56213 {
58215 {
60{
95{
62219 220 221 222 {
95224 225 226 227 228 {
95230 231 232 203 234 235 236 237 238 215 240 {
95242 243 244 221 246 {
95248 225 250 227 252 28 Pada contoh di atas, saya tanpa malu-malu menghubungkan referensi ke dua buku terbaru saya. Contohnya dimulai dengan membuat dan menyimpan 125 yang dibuat dari Model 120. Di dalam fungsi 124 dari 125, jika terjadi kesalahan, aplikasi akan mengeluarkan exception. Bila save berhasil, di dalam fungsi 124, dua objek buku dibuat dan disimpan. Serupa dengan 125, jika terjadi kesalahan saat menyimpan, kesalahan akan muncul; Jika tidak, pesan sukses dikeluarkan di console. Untuk membuat referensi ke Author, obyek buku mereferesi kedua skema }
87 primary key }
94 dalam properti }
87 dari skema }
88.Validasi Data Sebelum DisimpanUmumnya untuk data yang akan menghasilkan model untuk diisi oleh formulir pada halaman web. Karena itu, ada baiknya memvalidasi data ini sebelum menyimpan Model ke MongoDB. Pada contoh selanjutnya, Saya telah menguppdate skema author sebelumnya untuk menambahkan validasi dari properti berikut: }
59, 136, 137, dan 138. 1 11 2 13 3 49 4 261 27 263 29 265 firstName: "Jamie",0 267 firstName: "Jamie",2 269 firstName: "Jamie",3 mkdir mongoose_basics
1firstName: "Jamie",5 273 firstName: "Jamie",6 275 firstName: "Jamie",8 277 firstName: "Jamie",9 279 31 281 32 283 {
10285 {
44287 {
46289 {
48mkdir mongoose_basics
1{
50293 {
52277 {
54279 {
56281 {
58firstName: "Jamie",01 {
60285 {
62firstName: "Jamie",05 220 289 222 mkdir mongoose_basics
1224 firstName: "Jamie",11 226 277 228 279 230 281 232 firstName: "Jamie",19 234 285 236 firstName: "Jamie",23 238 289 240 mkdir mongoose_basics
1242 firstName: "Jamie",29 244 firstName: "Jamie",31 246 firstName: "Jamie",33 248 firstName: "Jamie",35 250 firstName: "Jamie",37 252 28 Properti }
59 sudah diberikan attribut dengan properti 140. Sekarang saat saya amemanggil fungsi 124, Mongoose akan mengembalikan sebuah pesan eror yang mengindikasikan properti }
59 dibutuhkan. Saya memilih tidak menggunakan properti }
60 required dalam kasus Cher atau Madonna akan menjadi author di database Saya.Properti 136, 137, dan 146semuanya memiliki validator kustom yang sangat mirip dengan yang diterapkan pada mereka. Mereka masing-masing memastikan bahwa nilai dimulai dengan nama domain jejaring sosial masing-masing. Field ini tidak diperlukan, jadi validator hanya akan diterapkan bila data disupply untuk properti tersebut. Mencari dan Mengupdate DataPengantar Mongoose tidak akan lengkap tanpa contoh mencari untuk record dan mengupdate satu atau lebih properti pada objek tersebut. Mongoose menyediakan beberapa fungsi berbeda untuk menemukan data untuk Model tertentu. Fungsi tersebut adalah 147, 148, dan 149. Fungsi 147 dan 148 keduanya menerima objek sebagai masukan yang memungkinkan pencarian kompleks, sedangkan 149 hanya menerima satu nilai dengan fungsi callback (contoh akan segera disertakan). Dalam contoh selanjutnya, saya akan menunjukkan bagaimana menemukan semua buku yang berisi string "mvc" di judul mereka. 1 firstName: "Jamie",41 2 firstName: "Jamie",43 3 firstName: "Jamie",45 4 {
9327 {
9529 firstName: "Jamie",51 firstName: "Jamie",0 28 Di dalam fungsi 147, Saya mencari string dengan case insensitif "mvc" pada properti 154. Hal ini dilakukan dengan menggunakan sintaks yang sama untuk mencari string dengan JavaScript. Fungsi find call juga dirantai ke metode query lainnya, seperti 155, 156, 157, 158, 159, 160, dll. Mari kita memperluas contoh sebelumnya untuk membatasi hasil kita ke lima buku pertama dan mengurutkan pada tanggal yang tercipta secara menurun. Fungsi ini akan mengembalikan lima buku terbaru yang berisi "mvc" di judulnya. 1 firstName: "Jamie",41 2 firstName: "Jamie",43 3 firstName: "Jamie",59 4 firstName: "Jamie",61 27 firstName: "Jamie",63 29 {
93firstName: "Jamie",0 {
95firstName: "Jamie",2 firstName: "Jamie",51 firstName: "Jamie",3 28 Setelah menerapkan fungsi 147, urutan fungsi lainnya tidak penting karena semua fungsi yang dirantai dikompilasi menjadi satu query tunggal dan tidak dieksekusi sampai fungsi 162 dipanggil. Seperti yang saya sebutkan sebelumnya, 149 dijalankan sedikit berbeda. Fungsi ini segera dijalankan dan menerima fungsi callback, ketimbang membiarkan serangkaian fungsi. Dalam contoh berikut ini, saya melakukan query author tertentu dengan }
94 mereka.1 firstName: "Jamie",73 2 firstName: "Jamie",75 3 firstName: "Jamie",77 4 firstName: "Jamie",79 27 28 }
94 pada kasus Anda mungkin sedikit berbeda. Saya menyalin }
94 ini dari sebuah 167 sebelumnya saat menemukan sebuah daftar book dengan "mvc" pada judulnya. Begitu sebuah objek telah dikembalikan, Anda dapat memodifikasi propertinya untuk mengupdatenya. Setelah Anda membuat perubahan yang diperlukan, Anda memanggil metode 124, seperti saat Anda membuat obyek. Dalam contoh berikut, saya akan memperluas contoh 169 dan update properti 138 pada author. 1 firstName: "Jamie",73 2 {
933 {
954 firstName: "Jamie",89 27 {
9529 firstName: "Jamie",93 firstName: "Jamie",0 221 firstName: "Jamie",2 firstName: "Jamie",97 firstName: "Jamie",3 firstName: "Jamie",99 firstName: "Jamie",5 227 firstName: "Jamie",6 28 Setelah author berhasil diambil, properti 138 telah disetel dan fungsi 124 telah dipanggil. Mongoose mampu mendeteksi bahwa properti 138 telah diubah, dan akan mengirimkan pernyataan update ke MongoDB hanya pada properti yang telah dimodifikasi. Jika terjadi kesalahan saat menyimpan, exception akan dilempar dan akan menghentikan aplikasi. Saat sukses, pesan sukses masuk ke konsol. Mongoose juga menawarkan dua fungsi tambahan yang membuat pencarian objek dan menyimpannya dalam satu langkah dengan fungsi yang diberi nama dengan tepat: 174 dan 175. Mari update contoh sebelumnya untuk menggunakan 174. 1 305 2 307 3 309 4 311 27 {
9529 315 firstName: "Jamie",0 28 Pada contoh sebelumnya, properti yang akan diperbarui disupply sebagai objek ke parameter kedua dari fungsi 174. Fungsi callback sekarang menjadi parameter ketiga. Saat update berhasil, objek }
87 kembali berisi informasi terbaru. Obyek ini masuk ke konsol untuk melihat properti penulis yang diperbarui.Contoh Kode TerakhirSepanjang artikel ini, saya memberikan potongan kecil kode untuk mengidentifikasi tindakan yang sangat spesifik, seperti membuat skema, membuat model, dll. Mari kita menggabungkan semuanya dalam contoh lengkap. Pertama, Saya membuat dua file tambahan: 179 dan 180. File ini berisikan definisi skema dan kreasi model masing-masing. baris yang terakhir dari kode berikut meembuat model tersedia untuk digunakan pada file 181. Mari memulai dengan file author.js: 1 {
72 3 11 4 13 27 49 29 261 firstName: "Jamie",0 263 firstName: "Jamie",2 265 firstName: "Jamie",3 267 firstName: "Jamie",5 269 firstName: "Jamie",6 mkdir mongoose_basics
1firstName: "Jamie",8 273 firstName: "Jamie",9 275 31 277 32 279 {
10281 {
44283 {
46285 {
48287 {
50289 {
52mkdir mongoose_basics
1{
54293 {
56277 {
58279 {
60281 {
62firstName: "Jamie",01 220 285 222 firstName: "Jamie",05 224 289 226 mkdir mongoose_basics
1228 firstName: "Jamie",11 230 277 232 279 234 281 236 firstName: "Jamie",19 238 285 240 firstName: "Jamie",23 242 289 244 mkdir mongoose_basics
1246 firstName: "Jamie",29 248 firstName: "Jamie",31 250 firstName: "Jamie",33 252 firstName: "Jamie",35 lastName: "Munro"03 firstName: "Jamie",37 lastName: "Munro"05 28 lastName: "Munro"07 lastName: "Munro"08 {
65lastName: "Munro"10 lastName: "Munro"11 lastName: "Munro"12 Selanjutnya datangnya file 180: 1 {
72 3 {
134 13 27 {
1729 lastName: "Munro"23 firstName: "Jamie",0 lastName: "Munro"25 firstName: "Jamie",2 lastName: "Munro"27 firstName: "Jamie",3 lastName: "Munro"29 firstName: "Jamie",5 lastName: "Munro"31 firstName: "Jamie",6 lastName: "Munro"33 firstName: "Jamie",8 mkdir mongoose_basics
1firstName: "Jamie",9 lastName: "Munro"37 31 lastName: "Munro"39 32 lastName: "Munro"41 {
10lastName: "Munro"43 {
44lastName: "Munro"45 {
46lastName: "Munro"47 {
48lastName: "Munro"49 {
50lastName: "Munro"51 {
52lastName: "Munro"53 {
54289 {
56lastName: "Munro"57 {
58firstName: "Jamie",31 {
60firstName: "Jamie",33 {
62firstName: "Jamie",35 220 firstName: "Jamie",37 222 28 224 226 {
68228 230 lastName: "Munro"73 Dan Terakhir, file 181 yang telah diupdate: 1 {
72 3 lastName: "Munro"78 4 lastName: "Munro"80 27 29 38 firstName: "Jamie",0 firstName: "Jamie",75 firstName: "Jamie",2 {
95firstName: "Jamie",3 lastName: "Munro"89 firstName: "Jamie",5 {
95firstName: "Jamie",6 lastName: "Munro"93 firstName: "Jamie",8 lastName: "Munro"95 firstName: "Jamie",9 lastName: "Munro"97 31 lastName: "Munro"99 32 401 {
10267 {
44405 {
46407 {
48409 {
50227 {
52{
54414 {
56221 {
58firstName: "Jamie",97 {
60420 {
62firstName: "Jamie",97 220 424 222 426 224 428 226 430 228 432 230 434 232 436 234 438 236 firstName: "Jamie",97 238 442 240 444 242 firstName: "Jamie",97 244 448 246 438 248 firstName: "Jamie",97 250 454 252 426 lastName: "Munro"03 458 lastName: "Munro"05 460 lastName: "Munro"07 438 lastName: "Munro"08 firstName: "Jamie",97 lastName: "Munro"10 466 lastName: "Munro"11 444 469 firstName: "Jamie",97 471 448 473 438 475 227 477 28 Pada contoh diatas, semua aksi Mongoose berisi di dalamnya fungsi }
77. File }
87 dan }
88 termasuk dengan fungsi 187 setelah memasukan pustaka }
75 library.Dengan berjalannya MongoDB, anda sekara bisa menjalankan aplikasi Node.js yang lengkap dengan perintah sebagai berikut: 1 480 Setelah saya menyimpan beberapa data saya ke database saya, Saya perbarui file 181 file fungsi pencari sebagai berikut: 1 {
72 3 lastName: "Munro"78 4 lastName: "Munro"80 27 29 38 firstName: "Jamie",0 firstName: "Jamie",75 firstName: "Jamie",2 {
95firstName: "Jamie",3 lastName: "Munro"89 firstName: "Jamie",5 {
95firstName: "Jamie",6 }
00firstName: "Jamie",8 }
02firstName: "Jamie",9 }
0431 }
0632 }
08{
10221 {
44firstName: "Jamie",97 {
46}
14{
48227 {
50{
95{
52}
20{
54221 {
56firstName: "Jamie",97 {
58}
26{
60firstName: "Jamie",97 {
62}
30220 444 222 }
34224 }
36226 438 228 227 230 {
95232 }
44234 221 236 firstName: "Jamie",97 238 }
50240 227 242 28 Sekali lagi, Anda dapat menjalankan aplikasi dengan perintah: 190. KesimpulanSetelah membaca artikel ini, Anda seharusnya dapat membuat Skema dan Model Mongol yang sangat fleksibel, menerapkan validasi sederhana atau kompleks, membuat dan memperbarui dokumen, dan akhirnya mencari dokumen yang telah dibuat. Semoga sekarang Anda merasa nyaman menggunakan Mongoose. Jika Anda ingin belajar lebih banyak, saya sarankan untuk meninjau ulangĀ Panduan Mongoose yang menyelidiki topik yang lebih maju seperti populasi, middleware, janji, dll. |