Node.js MongoDB Tutorial cu exemple
Majoritatea aplicaศiilor web moderne au un fel de sistem de stocare a datelor รฎn backend. De exemplu, dacฤ luฤm cazul unui magazin onlineping รn aplicaศie, date precum preศul unui articol ar fi stocate รฎn baza de date.
Cadrul Node js poate funcศiona cu baze de date atรขt cu relaศii (cum ar fi Oracle ศi MS SQL Server) ศi baze de date non-relaศionale (cum ar fi MongoDB). รn acest tutorial, vom vedea cum putem folosi bazele de date din aplicaศiile Node js.
Node.js ศi baze de date NoSQL
De-a lungul anilor, bazele de date NoSQL, cum ar fi MongoDB si pentru MySQL au devenit destul de populare ca baze de date pentru stocarea datelor. Capacitatea acestor baze de date de a stoca orice tip de conศinut ศi รฎn special รฎn orice tip de format este ceea ce face aceste baze de date atรขt de faimoase.
Node.js are capacitatea de a lucra cu ambele MySQL ศi MongoDB ca baze de date. Pentru a utiliza oricare dintre aceste baze de date, trebuie sฤ descฤrcaศi ศi sฤ utilizaศi modulele necesare utilizรขnd managerul de pachete Node.
Pentru MySQL, modulul necesar se numeศte โmysqlโ ศi pentru utilizare MongoDB modulul necesar pentru a fi instalat este โMongooseโ.
Cu aceste module, puteศi efectua urmฤtoarele operaศii รฎn Node.js
- Gestionaศi gruparea conexiunilor - Aici puteศi specifica numฤrul de MySQL conexiuni la baze de date care ar trebui menศinute ศi salvate de Node.js.
- Creaศi ศi รฎnchideศi o conexiune la o bazฤ de date. รn ambele cazuri, puteศi furniza o funcศie de apel invers care poate fi apelatฤ ori de cรขte ori sunt executate metodele de conexiune โcreareโ ศi โรฎnchidereโ.
- Interogฤrile pot fi executate pentru a obศine date din bazele de date respective pentru a prelua date.
- Manipularea datelor, cum ar fi inserarea datelor, ศtergerea ศi actualizarea datelor, poate fi realizatฤ ศi cu aceste module.
Pentru subiectele rฤmase, ne vom uita la modul รฎn care putem lucra MongoDB baze de date din interior Node.js.
Utilizarea MongoDB ศi Node.js
Dupฤ cum sa discutat รฎn subiectul anterior, MongoDB este una dintre cele mai populare baze de date utilizate รฎmpreunฤ cu Node.js.
Pe parcursul acestui capitol vom vedea
Cum putem stabili conexiuni cu a MongoDB Baza de date
Cum putem efectua operaศiunile normale de citire a datelor dintr-o bazฤ de date, precum ศi inserarea, ศtergerea ศi actualizarea รฎnregistrฤrilor รฎntr-o MongoDB Bazฤ de date.
รn scopul acestui capitol, sฤ presupunem cฤ avem cele de mai jos MongoDB date รฎn loc.
Numele bazei de date: EmployeeDB
Numele colecศiei: Angajat
Documents
{
{Employeeid : 1, Employee Name : Guru99},
{Employeeid : 2, Employee Name : Joe},
{Employeeid : 3, Employee Name : Martin},
}
- Instalarea modulelor NPM
Aveศi nevoie de un driver pentru a accesa Mongo dintr-o aplicaศie Node. Existฤ o serie de drivere Mongo disponibile, dar MongoDB este printre cele mai populare. Pentru a instala MongoDB modul, rulaศi comanda de mai jos
npm instalaศi mongodb
- Crearea ศi รฎnchiderea unei conexiuni la a MongoDB Bazฤ de date. Fragmentul de cod de mai jos aratฤ cum sฤ creaศi ศi sฤ รฎnchideศi o conexiune la a MongoDB Bazฤ de date.
Code Explicaลฃie:
- Primul pas este sฤ includeศi modulul mangoose, care se face prin funcศia require. Odatฤ ce acest modul este instalat, putem folosi funcศiile necesare disponibile รฎn acest modul pentru a crea conexiuni la baza de date.
- Apoi, specificฤm ศirul nostru de conexiune la baza de date. รn ศirul de conectare, existฤ 3 valori cheie care sunt transmise.
- Primul este โmongodbโ, care specificฤ faptul cฤ ne conectฤm la o bazฤ de date mongoDB.
- Urmฤtorul este โlocalhostโ, ceea ce รฎnseamnฤ cฤ ne conectฤm la o bazฤ de date pe maศina localฤ.
- Urmฤtorul este โEmployeeDBโ, care este numele bazei de date definite รฎn nostru MongoDB Bazฤ de date.
- Urmฤtorul pas este conectarea efectivฤ la baza noastrฤ de date. Funcศia connect preia datele noastre URL ศi are facilitatea de a specifica o funcศie de apel invers. Aceasta va fi apelatฤ atunci cรขnd conexiunea la baza de date este deschisฤ. Acest lucru ne oferฤ posibilitatea de a ศti dacฤ conexiunea la baza de date a avut succes sau nu.
- รn funcศie, scriem ศirul โConexiune stabilitฤโ รฎn consolฤ pentru a indica faptul cฤ a fost creatฤ o conexiune cu succes.
- รn cele din urmฤ, รฎnchidem conexiunea folosind instrucศiunea db.close.
Dacฤ codul de mai sus este executat corect, ศirul โConectatโ va fi scris pe consolฤ, aศa cum se aratฤ mai jos.
- Interogarea datelor รฎn a MongoDB Baza de date - Folosind MongoDB driver, putem prelua ศi date de la MongoDB baza de date. Secศiunea de mai jos va arฤta cum putem folosi driverul pentru a prelua toate documentele din colecศia noastrฤ de angajaศi รฎn baza noastrฤ de date EmployeeDB. Aceasta este colecศia de la noi MongoDB baza de date, care conศine toate documentele legate de angajaศi. Fiecare document are un ID de obiect, un nume de angajat ศi un ID de angajat pentru a defini valorile documentului.
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);
});
});
Code Explicaลฃie:
- รn primul pas, creฤm un cursor (Un cursor este un indicator care este folosit pentru a indica diferitele รฎnregistrฤri preluate dintr-o bazฤ de date. Cursorul este apoi folosit pentru a itera prin diferitele รฎnregistrฤri din baza de date. Aici definim un nume variabilฤ numit cursor care va fi folosit pentru a stoca indicatorul cฤtre รฎnregistrฤrile preluate din baza de date) care indicฤ รฎnregistrฤrile care sunt preluate din colecศia MongoDb. Avem, de asemenea, posibilitatea de a specifica colecศia โAngajatโ din care sฤ preluฤm รฎnregistrฤrile. Funcศia find() este folositฤ pentru a specifica cฤ dorim sฤ extragem toate documentele din MongoDB de colectare.
- Acum iterฤm prin cursor ศi pentru fiecare document din cursor vom executa o funcศie.
- Funcศia noastrฤ va imprima pur ศi simplu conศinutul fiecฤrui document pe consolฤ.
Notฤ: - De asemenea, este posibil sฤ se preia o anumitฤ รฎnregistrare dintr-o bazฤ de date. Acest lucru se poate face prin specificarea condiศiei de cฤutare รฎn funcศia find(). De exemplu, sฤ presupunem cฤ aศi dori doar sฤ preiaศi รฎnregistrarea care are numele angajatului ca Guru99, atunci aceastฤ afirmaศie poate fi scrisฤ dupฤ cum urmeazฤ
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
Dacฤ codul de mai sus este executat cu succes, urmฤtoarea ieศire va fi afiศatฤ รฎn consola dumneavoastrฤ.
ieศire:
Din ieศire,
- Veศi putea vedea clar cฤ toate documentele din colecศie sunt preluate. Acest lucru este posibil prin utilizarea metodei find() a conexiunii mongoDB (db) ศi iterarea prin toate documentele folosind cursorul.
- Inserarea documentelor รฎntr-o colecศie โ Documentele pot fi inserate รฎntr-o colecศie folosind metoda insertOne oferitฤ de MongoDB bibliotecฤ. Fragmentul de cod de mai jos aratฤ cum putem insera un document รฎntr-o colecศie 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"
});
});
Code Explicaลฃie:
- Aici folosim metoda insertOne din MongoDB bibliotecฤ pentru a insera un document รฎn colecศia Employee.
- Specificฤm detaliile documentului cu privire la ceea ce trebuie introdus รฎn colecศia Angajat.
Dacฤ verificaศi acum conศinutul dvs MongoDB baza de date, veศi gฤsi รฎnregistrarea cu Employeeid de 4 ศi EmployeeName de โNewEmployeeโ introduse รฎn colecศia Employee.
Notฤ: Consola nu va afiศa nicio ieศire deoarece รฎnregistrarea este inseratฤ รฎn baza de date ศi nicio ieศire nu poate fi afiศatฤ aici.
Pentru a verifica dacฤ datele au fost introduse corect รฎn baza de date, trebuie sฤ executaศi urmฤtoarele comenzi รฎn MongoDB
- Utilizaศi EmployeeDB
- db.Employee.find({Employeeid :4 })
Prima declaraศie asigurฤ cฤ sunteศi conectat la baza de date EmployeeDb. A doua declaraศie cautฤ รฎnregistrarea care are ID-ul de angajat 4.
- Actualizarea documentelor dintr-o colecศie โ Documentele pot fi actualizate รฎntr-o colecศie folosind metoda updateOne oferitฤ de MongoDB bibliotecฤ. Fragmentul de cod de mai jos aratฤ cum sฤ actualizaศi un document dintr-o colecศie 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"
}
});
});
Code Explicaลฃie:
- Aici folosim metoda โupdateOneโ din MongoDB bibliotecฤ, care este folositฤ pentru a actualiza un document dintr-o colecศie mongoDB.
- Specificฤm criteriile de cฤutare pentru care document trebuie actualizat. รn cazul nostru, dorim sฤ gฤsim documentul care are EmployeeName de โNewEmployeeโ.
- Apoi vrem sฤ setฤm valoarea EmployeeName al documentului de la โNewEmployeeโ la โMohanโ.
Dacฤ verificaศi acum conศinutul dvs MongoDB baza de date, veศi gฤsi รฎnregistrarea cu Employeeid de 4 ศi EmployeeName lui โMohanโ actualizate รฎn colecศia Employee.
Pentru a verifica dacฤ datele au fost actualizate corect รฎn baza de date, trebuie sฤ executaศi urmฤtoarele comenzi รฎn MongoDB
- Utilizaศi EmployeeDB
- db.Employee.find({Employeeid :4 })
Prima declaraศie asigurฤ cฤ sunteศi conectat la baza de date EmployeeDb. A doua declaraศie cautฤ รฎnregistrarea care are ID-ul de angajat 4.
- ศtergerea documentelor dintr-o colecศie โ Documentele pot fi ศterse dintr-o colecศie folosind metoda โdeleteOneโ oferitฤ de MongoDB bibliotecฤ. Fragmentul de cod de mai jos aratฤ cum sฤ ศtergeศi un document dintr-o colecศie mongoDB.
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';
MongoClient.connect(url, function(err, db) {
db.collection('Employee').deleteOne(
{
"EmployeeName": "Mohan"
}
);
});
Code Explicaลฃie:
- Aici folosim metoda โdeleteOneโ din MongoDB bibliotecฤ, care este folositฤ pentru a ศterge un document dintr-o colecศie mongoDB.
- Specificฤm criteriile de cฤutare pentru care document trebuie ศters. รn cazul nostru, dorim sฤ gฤsim documentul care are EmployeeName โMohanโ ศi sฤ ศtergem acest document.
Dacฤ verificaศi acum conศinutul dvs MongoDB baza de date, veศi gฤsi รฎnregistrarea cu Employeeid de 4 ศi EmployeeName de โMohanโ ศterse din colecศia Employee.
Pentru a verifica dacฤ datele au fost actualizate corect รฎn baza de date, trebuie sฤ executaศi urmฤtoarele comenzi รฎn MongoDB
- Utilizaศi EmployeeDB
- db.Employee.find()
Prima declaraศie asigurฤ cฤ sunteศi conectat la baza de date EmployeeDb. A doua declaraศie cautฤ ศi afiศeazฤ toate รฎnregistrฤrile din colecศia angajaศilor. Aici puteศi vedea dacฤ รฎnregistrarea a fost ศtearsฤ sau nu.
Cum sฤ construiศi o aplicaศie Node Express cu MongoDB pentru a stoca ศi a difuza conศinut
Construirea unei aplicaศii cu o combinaศie a ambelor utilizรขnd expres ศi MongoDB este destul de comunฤ รฎn zilele noastre.
Cรขnd lucraศi cu JavaScenariu aplicaศii bazate pe web, se va folosi รฎn mod normal aici termenul de stivฤ MEAN.
- Termenul MEAN stack se referฤ la o colecศie de JavaTehnologii bazate pe scripturi utilizate pentru a dezvolta aplicaศii web.
- MEAN este un acronim pentru MongoDB, ExpressJS, AngularJS, ศi Node.js.
Prin urmare, este รฎntotdeauna bine sฤ รฎnศelegeศi cum Node.js ศi MongoDB lucreazฤ รฎmpreunฤ pentru a furniza aplicaศii care interacศioneazฤ cu bazele de date backend.
Sฤ ne uitฤm la un exemplu simplu despre cum putem folosi โexpressโ ศi โMongoDBโ รฎmpreunฤ. Exemplul nostru va folosi aceeaศi colecศie de angajaศi รฎn MongoDB Baza de date EmployeeDB.
Acum vom รฎncorpora Express pentru a afiศa datele pe pagina noastrฤ web atunci cรขnd sunt solicitate de utilizator. Cรขnd aplicaศia noastrฤ ruleazฤ pe Node.js, ar putea fi necesar sฤ navigaศi la URL http://localhost:3000/Employeeid.
La lansarea paginii, vor fi afiศate toate ID-urile angajatului din colecศia Employee. Deci, sฤ vedem fragmentul de cod รฎn secศiuni care ne vor permite sฤ realizฤm acest lucru.
Pas 1) Definiศi toate bibliotecile care trebuie utilizate รฎn aplicaศia noastrฤ, care รฎn cazul nostru este atรขt MongoDB ศi bibliotecฤ expresฤ.
Code Explicaลฃie:
- Definim biblioteca noastrฤ โexpressโ, care va fi folositฤ รฎn aplicaศia noastrฤ.
- Ne definim "MongoDB', care va fi folositฤ รฎn aplicaศia noastrฤ pentru conectarea la sistemul nostru MongoDB Bazฤ de date.
- Aici definim URL din baza noastrฤ de date la care sฤ se conecteze.
- รn cele din urmฤ, definim un ศir care va fi folosit pentru a stoca colecศia noastrฤ de id-uri de angajaศi care trebuie sฤ fie afiศate รฎn browser mai tรขrziu.
Pas 2) รn acest pas, acum vom obศine toate รฎnregistrฤrile din colecศia noastrฤ โAngajaศiโ ศi vom lucra cu ele รฎn consecinศฤ.
Code Explicaลฃie:
- Creฤm o rutฤ cฤtre aplicaศia noastrฤ numitฤ โEmployeeidโ. Deci ori de cรขte ori cineva navigheazฤ la http://localhost:3000/Employeeid al aplicaศiei noastre, fragmentul de cod definit pentru aceastฤ rutฤ va fi executat.
- Aici obศinem toate รฎnregistrฤrile din colecศia noastrฤ โAngajatโ prin comanda db.collection(โAngajatโ).find(). Apoi atribuim aceastฤ colecศie unei variabile numite cursor. Folosind aceastฤ variabilฤ de cursor, vom putea naviga prin toate รฎnregistrฤrile colecศiei.
- Acum folosim funcศia cursor.each() pentru a naviga prin toate รฎnregistrฤrile colecศiei noastre. Pentru fiecare รฎnregistrare, vom defini un fragment de cod despre ce trebuie fฤcut atunci cรขnd fiecare รฎnregistrare este accesatฤ.
- รn cele din urmฤ, vedem cฤ dacฤ รฎnregistrarea returnatฤ nu este nulฤ, atunci luฤm angajatul prin comanda โitem.Employeeidโ. Restul codului este doar pentru a construi un cod HTML adecvat, care va permite ca rezultatele noastre sฤ fie afiศate corect รฎn browser.
Pas 3) รn acest pas, vom trimite rezultatele noastre cฤtre pagina web ศi vom face ca aplicaศia noastrฤ sฤ asculte pe un anumit port.
Code Explicaลฃie:
- Aici trimitem รฎntregul conศinut care a fost construit รฎn pasul anterior cฤtre pagina noastrฤ web. Parametrul โresโ ne permite sฤ trimitem conศinut cฤtre pagina noastrฤ web ca rฤspuns.
- Facem ca รฎntreaga noastrฤ aplicaศie Node.js sฤ asculte pe portul 3000.
ieศire:
Din ieศire,
- Aratฤ รฎn mod clar cฤ toate datele angajaศilor din colecศia Employee au fost recuperate. Acest lucru se datoreazฤ faptului cฤ folosim MongoDB driver pentru a se conecta la baza de date ศi a prelua toate รฎnregistrฤrile angajaศilor ศi, ulterior, a folosit โexpressโ pentru a afiศa รฎnregistrฤrile.
Iatฤ codul pentru referinศฤ
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() {});
Notฤ: cursor.each poate depreciat รฎn funcศie de versiunea dvs MongoDB conducฤtor auto. Puteศi adฤuga //noinspection JSDeprecatedSymbols รฎnainte de cursor.each pentru a evita problema. Alternativ, puteศi utiliza forEach. Mai jos este exemplul de cod folosind 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() {});
Rezumat
- Node.js este folosit รฎmpreunฤ cu NoSQL baze de date pentru a construi o mulศime de aplicaศii web moderne. Unele dintre bazele de date comune utilizate sunt MySQL ศi MongoDB.
- Unul dintre modulele comune utilizate pentru lucrul cu MongoDB baze de date este un modul numit โMongoDB.' Acest modul este instalat prin managerul de pachete Node.
- Cu MongoDB modul, este posibil sฤ interogaศi รฎnregistrฤrile dintr-o colecศie ศi sฤ efectuaศi operaศiunile normale de actualizare, ศtergere ศi inserare.
- รn cele din urmฤ, una dintre practicile moderne este utilizarea cadrului expres รฎmpreunฤ cu MongoDB pentru a furniza aplicaศii moderne. Cadrul Express poate folosi datele returnate de MongoDB driver ศi afiศaศi datele utilizatorului รฎn pagina web รฎn consecinศฤ.











