Node.js MongoDB Vodič s primjerima
Uglavnom sve suvremene web aplikacije imaju neku vrstu sustava za pohranu podataka u pozadini. Na primjer, ako uzmete aplikaciju za web kupnju, podaci poput cijene artikla bili bi pohranjeni u bazi podataka.
Okvir Node js može raditi s bazama podataka s obje relacijske (kao što je Oracle i MS SQL Server) i nerelacijske baze podataka (kao što je MongoDB). U ovom vodiču ćemo vidjeti kako možemo koristiti baze podataka unutar Node js aplikacija.
Node.js i NoSQL baze podataka
Tijekom godina, NoSQL baza podataka kao što je MongoDB i Za MySQL postale su prilično popularne kao baze podataka za pohranu podataka. Sposobnost ovih baza podataka da pohranjuju bilo koju vrstu sadržaja, a posebno u bilo kojoj vrsti formata, ono je što čini ove baze podataka tako poznatima.
Node.js ima mogućnost rada s oba MySQL i MongoDB kao baze podataka. Kako biste koristili bilo koju od ovih baza podataka, morate preuzeti i koristiti potrebne module pomoću upravitelja paketa Node.
Za MySQL, potreban modul se zove "mysql" i za korištenje MongoDB potreban modul koji treba instalirati je "Mongoose."
S ovim modulima možete izvoditi sljedeće operacije u Node.js
- Upravljanje skupljanjem veza – Ovdje možete odrediti broj MySQL veze s bazom podataka koje treba održavati i spremati Node.js.
- Stvorite i zatvorite vezu s bazom podataka. U oba slučaja, možete osigurati funkciju povratnog poziva koja se može pozvati kad god se izvrše metode povezivanja "stvori" i "zatvori".
- Upiti se mogu izvršiti za dobivanje podataka iz odgovarajućih baza podataka za dohvaćanje podataka.
- Manipulacija podacima, poput umetanja podataka, brisanja i ažuriranja podataka također se može postići pomoću ovih modula.
Za preostale teme, pogledat ćemo kako možemo raditi s njima MongoDB baze podataka unutar Node.js.
Korištenje MongoDB i Node.js
Kao što je objašnjeno u prethodnoj temi, MongoDB je jedna od najpopularnijih baza podataka koja se koristi uz Node.js.
Tijekom ovog poglavlja vidjet ćemo
Kako možemo uspostaviti veze s a MongoDB baza podataka
Kako možemo izvesti normalne operacije čitanja podataka iz baze podataka, kao i umetanje, brisanje i ažuriranje zapisa u MongoDB baza podataka.
Za potrebe ovog poglavlja, pretpostavimo da imamo sljedeće MongoDB podaci na mjestu.
Naziv baze podataka: EmployeeDB
Naziv zbirke: Zaposlenik
Documents { {Employeeid : 1, Employee Name : Guru99}, {Employeeid : 2, Employee Name : Joe}, {Employeeid : 3, Employee Name : Martin}, }
- Instaliranje NPM modula
Potreban vam je upravljački program za pristup Mongu iz aplikacije Node. Dostupni su brojni Mongo drajveri, ali MongoDB je među najpopularnijima. Za instaliranje MongoDB modula, pokrenite naredbu u nastavku
npm instalirajte mongodb
- Stvaranje i zatvaranje veze s a MongoDB baza podataka. Donji isječak koda pokazuje kako stvoriti i zatvoriti vezu s a MongoDB baza podataka.
Objašnjenje koda:
- Prvi korak je uključivanje mongoose modula, što se radi pomoću funkcije require. Nakon što je ovaj modul postavljen, možemo koristiti potrebne funkcije dostupne u ovom modulu za stvaranje veza s bazom podataka.
- Zatim specificiramo niz povezivanja s bazom podataka. U nizu za povezivanje postoje 3 ključne vrijednosti koje se prosljeđuju.
- Prvi je 'mongodb' koji specificira da se povezujemo na mongoDB bazu podataka.
- Sljedeći je 'localhost' što znači da se povezujemo s bazom podataka na lokalnom računalu.
- Sljedeći je 'EmployeeDB' što je naziv baze podataka definirane u našem MongoDB baza podataka.
- Sljedeći korak je stvarno povezivanje s našom bazom podataka. Funkcija povezivanja uzima naš URL i ima mogućnost specificiranja funkcije povratnog poziva. Bit će pozvan kada se otvori veza s bazom podataka. To nam daje priliku znati je li veza s bazom podataka bila uspješna ili ne.
- U funkciji pišemo niz "Veza uspostavljena" na konzolu kako bismo označili da je uspostavljena uspješna veza.
- Na kraju, vezu zatvaramo pomoću naredbe db.close.
Ako se gornji kod ispravno izvede, niz "Connected" bit će zapisan na konzoli kao što je prikazano u nastavku.
- Upit za podatke u a MongoDB baza podataka - Koristiti MongoDB vozač također možemo dohvatiti podatke iz MongoDB baza podataka. Donji odjeljak pokazat će kako možemo koristiti upravljački program za dohvaćanje svih dokumenata iz naše zbirke zaposlenika u našoj bazi podataka EmployeeDB. Ovo je zbirka u našoj MongoDB baza podataka koja sadrži sve dokumente vezane uz zaposlenike. Svaki dokument ima ID objekta, Ime zaposlenika i ID zaposlenika za definiranje vrijednosti dokumenta.
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); }); });
Objašnjenje koda:
- U prvom koraku stvaramo kursor (Kursor je pokazivač koji se koristi za pokazivanje na različite zapise dohvaćene iz baze podataka. Kursor se zatim koristi za ponavljanje kroz različite zapise u bazi podataka. Ovdje definiramo naziv varijable pod nazivom kursor koji će se koristiti za pohranjivanje pokazivača na zapise dohvaćene iz baze podataka) koji pokazuje na zapise koji su dohvaćeni iz MongoDb kolekcije. Također imamo mogućnost određivanja zbirke 'Zaposlenik' iz koje se dohvaćaju zapisi. Funkcija find() koristi se za navođenje da želimo dohvatiti sve dokumente iz MongoDB skup.
- Sada ponavljamo kroz kursor i za svaki dokument u kursoru ćemo izvršiti funkciju.
- Naša funkcija jednostavno će ispisati sadržaj svakog dokumenta na konzolu.
Bilješka: - Također je moguće dohvatiti određeni zapis iz baze podataka. To se može učiniti određivanjem uvjeta pretraživanja u funkciji find(). Na primjer, pretpostavimo da samo želite dohvatiti zapis koji ima ime zaposlenika kao Guru99, tada se ova izjava može napisati na sljedeći način
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
Ako se gornji kod uspješno izvrši, na vašoj konzoli će se prikazati sljedeći izlaz.
Izlaz:
Iz izlaza,
- Moći ćete jasno vidjeti da su svi dokumenti iz zbirke preuzeti. To je moguće korištenjem metode find() mongoDB veze (db) i ponavljanjem kroz sve dokumente pomoću kursora.
- Umetanje dokumenata u zbirku – Dokumenti se mogu umetnuti u zbirku pomoću metode insertOne koju pruža MongoDB knjižnica. Donji isječak koda pokazuje kako možemo umetnuti dokument u mongoDB kolekciju.
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url, function(err, db) { db.collection('Employee').insertOne({ Employeeid: 4, EmployeeName: "NewEmployee" }); });
Objašnjenje koda:
- Ovdje koristimo metodu insertOne iz MongoDB knjižnica za umetanje dokumenta u zbirku zaposlenika.
- Određujemo pojedinosti dokumenta o tome što treba umetnuti u zbirku zaposlenika.
Ako sada provjerite sadržaj svog MongoDB baze podataka, naći ćete zapis s Employeeid od 4 i EmployeeName od “NewEmployee” umetnut u kolekciju Employee.
Bilješka: Konzola neće prikazati nikakav izlaz jer se zapis umeće u bazu podataka i ovdje se ne može prikazati nikakav izlaz.
Kako biste provjerili jesu li podaci pravilno umetnuti u bazu podataka, morate izvršiti sljedeće naredbe MongoDB
- Koristite EmployeeDB
- db.Employee.find({Employeeid :4 })
Prva izjava osigurava da ste povezani s bazom podataka EmployeeDb. Druga izjava traži zapis koji ima ID zaposlenika 4.
- Ažuriranje dokumenata u zbirci – Dokumenti se mogu ažurirati u zbirci korištenjem metode updateOne koju nudi MongoDB knjižnica. Donji isječak koda pokazuje kako ažurirati dokument u mongoDB kolekciji.
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" } }); });
Objašnjenje koda:
- Ovdje koristimo metodu "updateOne" iz MongoDB biblioteka, koja se koristi za ažuriranje dokumenta u mongoDB kolekciji.
- Određujemo kriterije pretraživanja koji dokument treba ažurirati. U našem slučaju, želimo pronaći dokument koji ima EmployeeName "NewEmployee."
- Zatim želimo postaviti vrijednost EmployeeName dokumenta s "NewEmployee" na "Mohan".
Ako sada provjerite sadržaj svog MongoDB baze podataka, pronaći ćete ažurirani zapis s Employeeid of 4 i EmployeeName od “Mohan” u zbirci Employee.
Kako biste provjerili jesu li podaci ispravno ažurirani u bazi podataka, morate izvršiti sljedeće naredbe MongoDB
- Koristite EmployeeDB
- db.Employee.find({Employeeid :4 })
Prva izjava osigurava da ste povezani s bazom podataka EmployeeDb. Druga izjava traži zapis koji ima ID zaposlenika 4.
- Brisanje dokumenata u zbirci – Dokumenti se mogu brisati u kolekciji korištenjem metode "deleteOne" koju nudi MongoDB knjižnica. Donji isječak koda pokazuje kako izbrisati dokument u mongoDB kolekciji.
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url, function(err, db) { db.collection('Employee').deleteOne( { "EmployeeName": "Mohan" } ); });
Objašnjenje koda:
- Ovdje koristimo metodu "deleteOne" iz MongoDB biblioteka, koja se koristi za brisanje dokumenta u mongoDB kolekciji.
- Određujemo kriterije pretraživanja koji dokument treba obrisati. U našem slučaju, želimo pronaći dokument koji ima EmployeeName "Mohan" i izbrisati taj dokument.
Ako sada provjerite sadržaj svog MongoDB baze podataka, pronaći ćete zapis s Employeeid of 4 i EmployeeName od “Mohan” izbrisanim iz zbirke Employee.
Kako biste provjerili jesu li podaci ispravno ažurirani u bazi podataka, morate izvršiti sljedeće naredbe MongoDB
- Koristite EmployeeDB
- db.Employee.find()
Prva izjava osigurava da ste povezani s bazom podataka EmployeeDb. Drugi iskaz pretražuje i prikazuje sve zapise u zbirci zaposlenika. Ovdje možete vidjeti je li zapis izbrisan ili ne.
Kako izgraditi Node Express aplikaciju s MongoDB za pohranu i posluživanje sadržaja
Izrada aplikacije kombinacijom ekspresnog i MongoDB prilično je uobičajena u današnje vrijeme.
Pri radu s JavaScript aplikacije bazirane na webu, obično se ovdje koristi izraz MEAN stack.
- Pojam MEAN stog odnosi se na kolekciju JavaTehnologije temeljene na skriptama koje se koriste za razvoj web aplikacija.
- MEAN je akronim za MongoDB, ExpressJS, AngularJS, i Node.js.
Stoga je uvijek dobro razumjeti kako Node.js i MongoDB zajedno raditi na isporuci aplikacija koje su u interakciji s pozadinskim bazama podataka.
Pogledajmo jednostavan primjer kako možemo koristiti "express" i "MongoDB” zajedno. Naš će primjer koristiti istu zbirku zaposlenika u MongoDB EmployeeDB baza podataka.
Sada ćemo ugraditi Express za prikaz podataka na našoj web stranici kada to korisnik zatraži. Kada se naša aplikacija izvodi na Node.js, možda će trebati pregledati URL http://localhost:3000/Employeeid.
Kada se stranica pokrene, bit će prikazani svi ID-ovi zaposlenika u zbirci Zaposlenici. Dakle, pogledajmo isječak koda u odjeljcima koji će nam omogućiti da to postignemo.
Korak 1) Definirajte sve biblioteke koje treba koristiti u našoj aplikaciji, što je u našem slučaju i jedno i drugo MongoDB i ekspresna knjižnica.
Objašnjenje koda:
- Definiramo našu 'express' biblioteku, koja će se koristiti u našoj aplikaciji.
- Definiramo našeMongoDB' knjižnica, koja će se koristiti u našoj aplikaciji za povezivanje s našim MongoDB baza podataka.
- Ovdje definiramo URL naše baze podataka s kojom se povezujemo.
- Konačno, definiramo niz koji će se koristiti za pohranjivanje naše zbirke ID-ova zaposlenika koji se kasnije moraju prikazati u pregledniku.
Korak 2) U ovom koraku sada ćemo dobiti sve zapise u našoj zbirci 'Zaposlenici' i raditi s njima u skladu s tim.
Objašnjenje koda:
- Stvaramo put do naše aplikacije pod nazivom 'Employeeid.' Dakle, kad god netko pregledava http://localhost:3000/Employeeid naše aplikacije, izvršit će se isječak koda definiran za ovu rutu.
- Ovdje dobivamo sve zapise u našoj kolekciji 'Zaposlenik' putem naredbe db.collection('Zaposlenik').find(). Zatim ovu kolekciju dodjeljujemo varijabli koja se zove kursor. Pomoću ove varijable pokazivača moći ćemo pregledavati sve zapise zbirke.
- Sada koristimo funkciju cursor.each() za navigaciju kroz sve zapise naše zbirke. Za svaki zapis definirat ćemo isječak koda o tome što učiniti kada se pristupi svakom zapisu.
- Konačno, vidimo da ako vraćeni zapis nije null, tada preuzimamo zaposlenika putem naredbe “item.Employeeid”. Ostatak koda služi samo za izradu ispravnog HTML koda koji će omogućiti da naši rezultati budu pravilno prikazani u pregledniku.
Korak 3) U ovom koraku, poslat ćemo naš izlaz na web stranicu i natjerati našu aplikaciju da sluša na određenom portu.
Objašnjenje koda:
- Ovdje šaljemo cijeli sadržaj koji je konstruiran u prethodnom koraku na našu web stranicu. Parametar 'res' omogućuje nam slanje sadržaja na našu web stranicu kao odgovor.
- Čitava naša aplikacija Node.js sluša na portu 3000.
Izlaz:
Iz izlaza,
- Jasno pokazuje da su svi id-ovi zaposlenika u zbirci zaposlenika vraćeni. To je zato što koristimo MongoDB upravljački program za povezivanje s bazom podataka i dohvaćanje svih zapisa o zaposlenicima i naknadno korišten "express" za prikaz zapisa.
Ovdje je kôd za vašu referencu
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 JSDeprecatedSymbols cursor.each(function(err, item) { if (item != null) { str = str + " Employee id " + item.Employeeid + "</br>"; } }); res.send(str); db.close(); }); }); var server = app.listen(3000, function() {});
Bilješka: cursor.each možda zastario na temelju vaše verzije MongoDB vozač. Možete dodati //noinspection JSDeprecatedSymbols ispred cursor.each da biste zaobišli problem. Alternativno, možete koristiti forEach. Ispod je primjer koda koji koristi 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 + "</br>"; } }, function(err) { res.send(err); db.close(); } ); }); }); var server = app.listen(8080, function() {});
rezime
- Node.js se koristi zajedno s NoSQL baze podataka za izgradnju mnogih modernih web aplikacija. Neke od uobičajenih baza podataka koje se koriste su MySQL i MongoDB.
- Jedan od uobičajenih modula koji se koriste za rad MongoDB baze podataka je modul koji se zove 'MongoDB.' Ovaj modul se instalira putem upravitelja paketa Node.
- Uz MongoDB modula, moguće je tražiti zapise u zbirci i izvoditi normalne operacije ažuriranja, brisanja i umetanja.
- Konačno, jedna od modernih praksi je korištenje ekspresnog okvira zajedno s MongoDB za isporuku suvremenih aplikacija. Okvir Express može koristiti podatke koje vraća MongoDB vozač i prikazati podatke korisniku na web stranici u skladu s tim.