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

  1. 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.
  2. 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โ€.
  3. Interogฤƒrile pot fi executate pentru a obศ›ine date din bazele de date respective pentru a prelua date.
  4. 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},
}
  1. 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

  1. 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.

Utilizarea MongoDB ศ™i Node.js

Code Explicaลฃie:

  1. 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.
  2. 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.
  1. 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.
  2. รŽn funcศ›ie, scriem ศ™irul โ€žConexiune stabilitฤƒโ€ รฎn consolฤƒ pentru a indica faptul cฤƒ a fost creatฤƒ o conexiune cu succes.
  3. รŽ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.

Utilizarea MongoDB ศ™i Node.js

  1. 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.

Utilizarea MongoDB ศ™i Node.js

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:

  1. รŽ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.
  2. Acum iterฤƒm prin cursor ศ™i pentru fiecare document din cursor vom executa o funcศ›ie.
  3. 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:

Utilizarea MongoDB ศ™i Node.js

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.
  1. 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.

Utilizarea MongoDB ศ™i Node.js

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:

  1. Aici folosim metoda insertOne din MongoDB bibliotecฤƒ pentru a insera un document รฎn colecศ›ia Employee.
  2. 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

  1. Utilizaศ›i EmployeeDB
  2. 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.

  1. 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.

Utilizarea MongoDB ศ™i Node.js

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:

  1. Aici folosim metoda โ€župdateOneโ€ din MongoDB bibliotecฤƒ, care este folositฤƒ pentru a actualiza un document dintr-o colecศ›ie mongoDB.
  2. Specificฤƒm criteriile de cฤƒutare pentru care document trebuie actualizat. รŽn cazul nostru, dorim sฤƒ gฤƒsim documentul care are EmployeeName de โ€žNewEmployeeโ€.
  3. 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

  1. Utilizaศ›i EmployeeDB
  2. 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.

  1. ศ˜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.

Utilizarea MongoDB ศ™i Node.js

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:

  1. Aici folosim metoda โ€ždeleteOneโ€ din MongoDB bibliotecฤƒ, care este folositฤƒ pentru a ศ™terge un document dintr-o colecศ›ie mongoDB.
  2. 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

  1. Utilizaศ›i EmployeeDB
  2. 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ฤƒ.

Creaศ›i o aplicaศ›ie Node Express cu MongoDB

Code Explicaลฃie:

  1. Definim biblioteca noastrฤƒ โ€žexpressโ€, care va fi folositฤƒ รฎn aplicaศ›ia noastrฤƒ.
  2. Ne definim "MongoDB', care va fi folositฤƒ รฎn aplicaศ›ia noastrฤƒ pentru conectarea la sistemul nostru MongoDB Bazฤƒ de date.
  3. Aici definim URL din baza noastrฤƒ de date la care sฤƒ se conecteze.
  4. รŽ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ศ›ฤƒ.

Creaศ›i o aplicaศ›ie Node Express cu MongoDB

Code Explicaลฃie:

  1. 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.
  2. 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.
  3. 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ฤƒ.
  4. รŽ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.

Creaศ›i o aplicaศ›ie Node Express cu MongoDB

Code Explicaลฃie:

  1. 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.
  2. Facem ca รฎntreaga noastrฤƒ aplicaศ›ie Node.js sฤƒ asculte pe portul 3000.

ieศ™ire:

Creaศ›i o aplicaศ›ie Node Express cu MongoDB

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ศ›ฤƒ.

Rezumaศ›i aceastฤƒ postare cu: