Selalunya semua aplikasi web moden mempunyai semacam sistem penyimpanan data di bahagian belakang. Sebagai contoh, jika anda mengambil contoh aplikasi belanja web, data seperti harga barang akan disimpan dalam pangkalan data.
Rangka kerja Node js boleh berfungsi dengan pangkalan data dengan kedua-dua hubungan (seperti Oracle dan MS SQL Server) dan pangkalan data bukan hubungan (seperti MongoDB). Dalam tutorial ini, kita akan melihat bagaimana kita dapat menggunakan pangkalan data dari dalam aplikasi Node js.
Dalam tutorial ini, anda akan belajar-
- Pangkalan Data Node.js dan NoSQL
- Menggunakan MongoDB dan Node.js
- Cara membina aplikasi express node dengan MongoDB untuk menyimpan dan melayani kandungan
Pangkalan Data Node.js dan NoSQL
Selama bertahun-tahun, pangkalan data NoSQL seperti MongoDB dan MySQL menjadi sangat popular sebagai pangkalan data untuk menyimpan data. Keupayaan pangkalan data ini menyimpan segala jenis kandungan dan terutama dalam jenis format inilah yang menjadikan pangkalan data ini begitu terkenal.
Node.js mempunyai keupayaan untuk bekerja dengan MySQL dan MongoDB sebagai pangkalan data. Untuk menggunakan salah satu daripada pangkalan data ini, anda perlu memuat turun dan menggunakan modul yang diperlukan menggunakan pengurus pakej Node.
Untuk MySQL, modul yang diperlukan disebut "mysql" dan untuk menggunakan MongoDB modul yang diperlukan untuk dipasang adalah "Mongoose."
Dengan modul ini, anda boleh melakukan operasi berikut di Node.js
- Uruskan penyatuan sambungan - Di sinilah anda dapat menentukan bilangan sambungan pangkalan data MySQL yang harus dijaga dan disimpan oleh Node.js.
- Buat dan tutup sambungan ke pangkalan data. Dalam mana-mana keadaan, anda dapat memberikan fungsi panggilan balik yang dapat dipanggil setiap kali kaedah sambungan "buat" dan "tutup" dijalankan.
- Pertanyaan dapat dijalankan untuk mendapatkan data dari pangkalan data masing-masing untuk mengambil data.
- Manipulasi data, seperti memasukkan data, menghapus, dan mengemas kini data juga dapat dicapai dengan modul ini.
Untuk topik yang tinggal, kita akan melihat bagaimana kita dapat bekerja dengan pangkalan data MongoDB dalam Node.js.
Menggunakan MongoDB dan Node.js
Seperti yang dibincangkan dalam topik sebelumnya, MongoDB adalah salah satu pangkalan data paling popular yang digunakan bersama dengan Node.js.
Dalam bab ini, kita akan melihat
Bagaimana kita dapat menjalin hubungan dengan pangkalan data MongoDB
Bagaimana kita dapat melakukan operasi normal membaca data dari pangkalan data serta memasukkan, menghapus, dan mengemas kini catatan dalam pangkalan data MongoDB.
Untuk tujuan bab ini, mari kita anggap bahawa kita mempunyai data MongoDB di bawah.
Nama pangkalan data: EmployeeDB
Nama koleksi: Pekerja
Documents{{Employeeid : 1, Employee Name : Guru99},{Employeeid : 2, Employee Name : Joe},{Employeeid : 3, Employee Name : Martin},}
- Memasang Modul NPM
Anda memerlukan pemandu untuk mengakses Mongo dari dalam aplikasi Node. Terdapat sebilangan pemandu Mongo, tetapi MongoDB adalah antara yang paling popular. Untuk memasang modul MongoDB, jalankan arahan di bawah
npm pasang mongodb
- Membuat dan menutup sambungan ke pangkalan data MongoDB. Coretan kod di bawah menunjukkan cara membuat dan menutup sambungan ke pangkalan data MongoDB.
Penjelasan Kod:
- Langkah pertama adalah memasukkan modul mongoose, yang dilakukan melalui fungsi memerlukan. Setelah modul ini dipasang, kita dapat menggunakan fungsi yang diperlukan dalam modul ini untuk membuat sambungan ke pangkalan data.
- Seterusnya, kami menentukan rentetan sambungan kami ke pangkalan data. Dalam rentetan sambung, terdapat 3 nilai utama yang dilalui.
- Yang pertama adalah 'mongodb' yang menentukan bahawa kita menyambung ke pangkalan data mongoDB.
- Yang berikutnya adalah 'localhost' yang bermaksud kita menyambung ke pangkalan data pada mesin tempatan.
- Yang berikutnya adalah 'EmployeeDB' yang merupakan nama pangkalan data yang ditentukan dalam pangkalan data MongoDB kami.
- Langkah seterusnya adalah benar-benar menyambung ke pangkalan data kami. Fungsi sambung menggunakan URL kami dan mempunyai kemudahan untuk menentukan fungsi panggilan balik. Ia akan dipanggil semasa sambungan dibuka ke pangkalan data. Ini memberi kita peluang untuk mengetahui apakah sambungan pangkalan data berjaya atau tidak.
- Dalam fungsi tersebut, kami menulis rentetan "Sambungan dibuat" ke konsol untuk menunjukkan bahawa sambungan berjaya dibuat.
- Akhirnya, kami menutup sambungan menggunakan penyataan db.close.
Sekiranya kod di atas dilaksanakan dengan betul, rentetan "Connected" akan ditulis ke konsol seperti gambar di bawah.
- Meminta data dalam pangkalan data MongoDB - Dengan menggunakan pemacu MongoDB, kita juga dapat mengambil data dari pangkalan data MongoDB.
Bahagian di bawah akan menunjukkan bagaimana kita boleh menggunakan pemacu untuk mengambil semua dokumen dari koleksi Karyawan kita dalam pangkalan data EmployeeDB kami. Ini adalah koleksi dalam pangkalan data MongoDB kami, yang berisi semua dokumen yang berkaitan dengan pekerja. Setiap dokumen mempunyai id objek, nama karyawan, dan id pekerja untuk menentukan nilai-nilai dokumen.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {var cursor = db.collection('Employee').find();cursor.each(function(err, doc) {console.log(doc);});});
Penjelasan Kod:
-
Pada langkah pertama, kita membuat kursor (Kursor adalah penunjuk yang digunakan untuk menunjuk ke berbagai catatan yang diambil dari pangkalan data. Kursor kemudian digunakan untuk melakukan iterasi melalui catatan yang berbeza dalam pangkalan data. Di sini kita mendefinisikan nama pemboleh ubah yang disebut kursor yang akan digunakan untuk menyimpan penunjuk ke rekod yang diambil dari pangkalan data.) yang menunjuk ke rekod yang diambil dari koleksi MongoDb. Kami juga mempunyai kemudahan untuk menentukan koleksi 'Karyawan' dari mana untuk mengambil rekod. Fungsi find () digunakan untuk menentukan bahawa kami ingin mengambil semua dokumen dari koleksi MongoDB.
-
Kami sekarang melakukan iterasi melalui kursor kami dan untuk setiap dokumen di kursor kami akan menjalankan fungsi.
-
Fungsi kami hanyalah mencetak kandungan setiap dokumen ke konsol.
Catatan: - Anda juga boleh mengambil rekod tertentu dari pangkalan data. Ini dapat dilakukan dengan menentukan keadaan carian dalam fungsi find (). Sebagai contoh, andaikan jika anda hanya ingin mengambil rekod yang mempunyai nama pekerja sebagai Guru99, maka pernyataan ini boleh ditulis seperti berikut
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
Sekiranya kod di atas dilaksanakan dengan jayanya, output berikut akan dipaparkan di konsol anda.
Pengeluaran:
Dari output,
- Anda akan dapat melihat dengan jelas bahawa semua dokumen dari koleksi diambil. Ini dimungkinkan dengan menggunakan kaedah find () sambungan mongoDB (db) dan melakukan lelaran melalui semua dokumen menggunakan kursor.
- Memasukkan dokumen dalam koleksi - Dokumen boleh dimasukkan ke dalam koleksi menggunakan kaedah insertOne yang disediakan oleh perpustakaan MongoDB. Coretan kod di bawah menunjukkan bagaimana kita dapat memasukkan dokumen ke dalam koleksi mongoDB.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').insertOne({Employeeid: 4,EmployeeName: "NewEmployee"});});
Penjelasan Kod:
- Di sini kita menggunakan kaedah insertOne dari perpustakaan MongoDB untuk memasukkan dokumen ke dalam koleksi Karyawan.
- Kami menentukan perincian dokumen mengenai apa yang perlu dimasukkan ke dalam koleksi Karyawan.
Sekiranya anda memeriksa kandungan pangkalan data MongoDB anda, anda akan menemui rekod dengan Employeeid of 4 dan EmployeeName dari "NewEm Employee" yang dimasukkan ke dalam koleksi Employee.
Catatan: Konsol tidak akan menunjukkan output kerana rekod dimasukkan ke dalam pangkalan data dan tidak ada output yang dapat ditunjukkan di sini.
Untuk memastikan bahawa data telah dimasukkan dengan betul di dalam pangkalan data, anda perlu menjalankan perintah berikut di MongoDB
- Gunakan EmployeeDB
- db.Em Employee.find ({Pekerja: 4})
Pernyataan pertama memastikan bahawa anda disambungkan ke pangkalan data EmployeeDb. Pernyataan kedua mencari rekod yang mempunyai id pekerja 4.
- Mengemas kini dokumen dalam koleksi - Dokumen dapat dikemas kini dalam koleksi menggunakan kaedah updateOne yang disediakan oleh perpustakaan MongoDB. Coretan kod di bawah menunjukkan cara mengemas kini dokumen dalam koleksi mongoDB.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').updateOne({"EmployeeName": "NewEmployee"}, {$set: {"EmployeeName": "Mohan"}});});
Penjelasan Kod:
- Di sini kita menggunakan kaedah "updateOne" dari perpustakaan MongoDB, yang digunakan untuk mengemas kini dokumen dalam koleksi mongoDB.
- Kami menentukan kriteria carian yang mana dokumen perlu diperbaharui. Dalam kes kami, kami ingin mencari dokumen yang mempunyai Nama Karyawan "NewEm Employee."
- Kami kemudian ingin menetapkan nilai Nama Karyawan dari "NewEm Employee" ke "Mohan".
Sekiranya anda sekarang menyemak kandungan pangkalan data MongoDB, anda akan menemui rekod dengan Employeeid of 4 dan EmployeeName "Mohan" yang dikemas kini dalam koleksi Employee.
Untuk memastikan bahawa data telah diperbarui dengan betul dalam pangkalan data, anda perlu melaksanakan perintah berikut di MongoDB
- Gunakan EmployeeDB
- db.Em Employee.find ({Pekerja: 4})
Pernyataan pertama memastikan bahawa anda disambungkan ke pangkalan data EmployeeDb. Pernyataan kedua mencari rekod yang mempunyai id pekerja 4.
- Menghapus dokumen dalam koleksi - Dokumen boleh dihapus dalam koleksi menggunakan kaedah "deleteOne" yang disediakan oleh perpustakaan MongoDB. Coretan kod di bawah menunjukkan cara menghapus dokumen dalam koleksi mongoDB.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').deleteOne({"EmployeeName": "Mohan"});});
Penjelasan Kod:
- Di sini kita menggunakan kaedah "deleteOne" dari perpustakaan MongoDB, yang digunakan untuk menghapus dokumen dalam koleksi mongoDB.
- Kami menentukan kriteria carian dokumen mana yang perlu dihapus. Dalam kes kami, kami ingin mencari dokumen yang mempunyai Nama Pekerja "Mohan" dan memadamkan dokumen ini.
Sekiranya sekarang anda menyemak kandungan pangkalan data MongoDB, anda akan menemui rekod dengan Employeeid of 4 dan EmployeeName "Mohan" dihapus dari koleksi Employee.
Untuk memastikan bahawa data telah diperbarui dengan betul dalam pangkalan data, anda perlu melaksanakan perintah berikut di MongoDB
- Gunakan EmployeeDB
- db. Pekerja.cari ()
Pernyataan pertama memastikan bahawa anda disambungkan ke pangkalan data EmployeeDb. Pernyataan kedua mencari dan memaparkan semua rekod dalam koleksi pekerja. Di sini anda dapat melihat sama ada rekod tersebut telah dipadam atau tidak.
Cara membina aplikasi express node dengan MongoDB untuk menyimpan dan melayani kandungan
Membangun aplikasi dengan gabungan kedua-duanya menggunakan ekspres dan MongoDB adalah perkara biasa sekarang.
Semasa bekerja dengan aplikasi berasaskan web JavaScript, seseorang biasanya akan menggunakan istilah MEAN stack.
- Istilah MEAN stack merujuk kepada kumpulan teknologi berasaskan JavaScript yang digunakan untuk mengembangkan aplikasi web.
- MEAN adalah singkatan untuk MongoDB, ExpressJS, AngularJS, dan Node.js.
Oleh itu, selalu baik untuk memahami bagaimana Node.js dan MongoDB bekerjasama untuk menyampaikan aplikasi yang berinteraksi dengan pangkalan data backend.
Mari kita lihat contoh ringkas bagaimana kita boleh menggunakan "express" dan "MongoDB" bersama-sama. Contoh kami akan menggunakan koleksi Pekerja yang sama dalam pangkalan data EmployeeDB MongoDB.
Kami sekarang akan menggabungkan Express untuk menampilkan data di halaman web kami ketika diminta oleh pengguna. Apabila aplikasi kita berjalan di Node.js, seseorang mungkin perlu melayari URL http: // localhost: 3000 / Employeeid .
Semasa halaman dilancarkan, semua id pekerja dalam koleksi Pekerja akan dipaparkan. Oleh itu, mari kita lihat coretan kod di bahagian yang membolehkan kita mencapainya.
Langkah 1) Tentukan semua perpustakaan yang perlu digunakan dalam aplikasi kita, yang dalam kes kita adalah perpustakaan MongoDB dan ekspres.
Penjelasan Kod:
- Kami menentukan perpustakaan 'ekspres' kami, yang akan digunakan dalam aplikasi kami.
- Kami menentukan perpustakaan 'ekspres' kami, yang akan digunakan dalam aplikasi kami untuk menyambung ke pangkalan data MongoDB kami.
- Di sini kami menentukan URL pangkalan data kami untuk disambungkan.
- Akhirnya, kami menentukan rentetan yang akan digunakan untuk menyimpan koleksi id pekerja kami yang perlu dipaparkan di penyemak imbas di kemudian hari.
Langkah 2) Pada langkah ini, kita sekarang akan mendapatkan semua catatan dalam koleksi 'Karyawan' kita dan bekerja dengan mereka dengan sewajarnya.
Penjelasan Kod:
- Kami membuat laluan ke aplikasi kami yang disebut 'Employeeid.' Oleh itu, setiap kali ada yang melayari http: // localhost: 3000 / Employeeid aplikasi kami, coretan kod yang ditentukan untuk laluan ini akan dilaksanakan.
- Di sini kita mendapatkan semua rekod dalam koleksi 'Karyawan' kita melalui perintah db.collection ('Employee'). Find (). Kami kemudian menetapkan koleksi ini ke pemboleh ubah yang disebut kursor. Dengan menggunakan pemboleh ubah kursor ini, kita akan dapat melihat semua rekod koleksi.
- Kami kini menggunakan fungsi kursor.each () untuk menavigasi semua rekod koleksi kami. Untuk setiap rekod, kami akan menentukan coretan kod tentang apa yang harus dilakukan apabila setiap rekod diakses.
- Akhirnya, kami melihat bahawa jika rekod yang dikembalikan tidak kosong, maka kami akan mengambil pekerja tersebut melalui arahan "item.Em Employeeid". Selebihnya kod hanya untuk membina kod HTML yang betul yang akan membolehkan hasil kami dipaparkan dengan betul di penyemak imbas.
Langkah 3) Pada langkah ini, kami akan mengirimkan output kami ke halaman web dan membuat aplikasi kami mendengarkan pada port tertentu.
Penjelasan Kod:
- Di sini kami mengirimkan keseluruhan kandungan yang telah dibina pada langkah awal ke laman web kami. Parameter 'res' membolehkan kami mengirim kandungan ke laman web kami sebagai respons.
- Kami membuat aplikasi Node.js kami didengarkan di port 3000.
Pengeluaran:
Dari output,
- Ini jelas menunjukkan bahawa semua pekerja dalam koleksi Kakitangan telah diambil. Ini kerana kami menggunakan pemacu MongoDB untuk menyambung ke pangkalan data dan mengambil semua rekod Pekerja dan kemudian menggunakan "express" untuk memaparkan rekod.
Inilah kod untuk rujukan anda
var express = require('express');var app = express();var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';var str = "";app.route('/Employeeid').get(function(req, res){MongoClient.connect(url, function(err, db) {var cursor = db.collection('Employee').find();//noinspection JSDeprecatedSymbolscursor.each(function(err, item) {if (item != null) {str = str + " Employee id " + item.Employeeid + "";}});res.send(str);db.close();});});var server = app.listen(3000, function() {});
Catatan: cursor.each mungkin tidak digunakan lagi berdasarkan versi pemacu MongoDB anda. Anda boleh menambahkan // noinspection JSDeprecatedSymbols sebelum kursor.each untuk mengelakkan masalah ini. Sebagai alternatif, anda boleh menggunakan forEach. Berikut adalah contoh kod menggunakan forEach
var express = require('express');var app = express();var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';var str = "";app.route('/Employeeid').get(function(req, res) {MongoClient.connect(url, function(err, db) {var collection = db.collection('Employee');var cursor = collection.find({});str = "";cursor.forEach(function(item) {if (item != null) {str = str + " Employee id " + item.Employeeid + "";}}, function(err) {res.send(err);db.close();});});});var server = app.listen(8080, function() {});
Ringkasan
- Node.js digunakan bersama dengan pangkalan data NoSQL untuk membina banyak aplikasi web zaman moden. Beberapa pangkalan data yang biasa digunakan adalah MySQL dan MongoDB.
- Salah satu modul yang biasa digunakan untuk bekerja dengan pangkalan data MongoDB adalah modul yang disebut 'MongoDB.' Modul ini dipasang melalui pengurus pakej Node.
- Dengan modul MongoDB, ada kemungkinan untuk meminta rekod dalam koleksi dan melakukan operasi kemas kini, hapus dan masukkan biasa.
- Akhirnya, salah satu amalan moden adalah menggunakan kerangka ekspres bersama dengan MongoDB untuk menyampaikan aplikasi moden. Kerangka Express dapat memanfaatkan data yang dikembalikan oleh pemacu MongoDB dan menampilkan data tersebut kepada pengguna di halaman web dengan sewajarnya.