node.js MongoDB Tutorial med eksempler

For det meste har alle moderne webapplikationer en slags datalagringssystem i backend. For eksempel, hvis du tager tilfældet med en webshoppingapplikation, vil data såsom prisen på en vare blive gemt i databasen.

Node js-rammen kan arbejde med databaser med både relationelle (f.eks Oracle og MS SQL Server) og ikke-relationelle databaser (som f.eks MongoDB). I denne tutorial vil vi se, hvordan vi kan bruge databaser fra Node js-applikationer.

Node.js og NoSQL-databaser

Gennem årene har NoSQL-database som f.eks MongoDB og For MySQL er blevet ret populære som databaser til lagring af data. Disse databasers evne til at gemme enhver form for indhold og især i enhver form for format er det, der gør disse databaser så berømte.

Node.js har mulighed for at arbejde med begge dele MySQL og MongoDB som databaser. For at bruge en af ​​disse databaser skal du downloade og bruge de nødvendige moduler ved hjælp af Node-pakkehåndteringen.

Til MySQL, kaldes det påkrævede modul "mysql" og til brug MongoDB det nødvendige modul, der skal installeres, er "Mongoose".

Med disse moduler kan du udføre følgende handlinger i Node.js

  1. Administrer forbindelsespooling – Her kan du angive antallet af MySQL databaseforbindelser, der skal vedligeholdes og gemmes af Node.js.
  2. Opret og luk en forbindelse til en database. I begge tilfælde kan du give en tilbagekaldsfunktion, som kan kaldes, når "opret" og "luk" forbindelsesmetoderne udføres.
  3. Forespørgsler kan udføres for at hente data fra respektive databaser for at hente data.
  4. Datamanipulation, såsom indsættelse af data, sletning og opdatering af data kan også opnås med disse moduler.

For de resterende emner vil vi se på, hvordan vi kan arbejde med MongoDB databaser indenfor node.js.

Ved brug af MongoDB og Node.js

Som diskuteret i det tidligere emne, MongoDB er en af ​​de mest populære databaser, der bruges sammen med Node.js.

I løbet af dette kapitel vil vi se

Hvordan vi kan etablere forbindelser med en MongoDB database

Hvordan vi kan udføre de normale operationer med at læse data fra en database samt indsætte, slette og opdatere poster i en MongoDB databasen.

Med henblik på dette kapitel, lad os antage, at vi har nedenstående MongoDB data på plads.

Databasenavn: EmployeeDB

Samlingens navn: Medarbejder

Documents
{
	{Employeeid : 1, Employee Name : Guru99},
	{Employeeid : 2, Employee Name : Joe},
	{Employeeid : 3, Employee Name : Martin},
}
  1. Installation af NPM-modulerne

Du skal bruge en driver for at få adgang til Mongo fra en Node-applikation. Der er en række Mongo-drivere til rådighed, men MongoDB er blandt de mest populære. For at installere MongoDB modul, skal du køre kommandoen nedenfor

npm installer mongodb

  1. Oprettelse og lukning af en forbindelse til en MongoDB databasen. Nedenstående kodestykke viser, hvordan du opretter og lukker en forbindelse til en MongoDB databasen.

Ved brug af MongoDB og Node.js

Kodeforklaring:

  1. Det første trin er at inkludere mongoose-modulet, hvilket gøres gennem kræve-funktionen. Når dette modul er på plads, kan vi bruge de nødvendige funktioner til rådighed i dette modul til at skabe forbindelser til databasen.
  2. Dernæst specificerer vi vores forbindelsesstreng til databasen. I forbindelsesstrengen er der 3 nøgleværdier, som er bestået.
  • Den første er 'mongodb', som angiver, at vi opretter forbindelse til en mongoDB-database.
  • Den næste er 'localhost', hvilket betyder, at vi opretter forbindelse til en database på den lokale maskine.
  • Den næste er 'EmployeeDB' som er navnet på databasen defineret i vores MongoDB databasen.
  1. Det næste trin er faktisk at oprette forbindelse til vores database. Connect-funktionen tager vores URL ind og har mulighed for at angive en tilbagekaldsfunktion. Det vil blive kaldt, når forbindelsen åbnes til databasen. Dette giver os mulighed for at vide, om databaseforbindelsen var vellykket eller ej.
  2. I funktionen skriver vi strengen "Forbindelse etableret" til konsollen for at indikere, at en vellykket forbindelse blev oprettet.
  3. Til sidst lukker vi forbindelsen ved hjælp af db.close-erklæringen.

Hvis ovenstående kode udføres korrekt, vil strengen "Connected" blive skrevet til konsollen som vist nedenfor.

Ved brug af MongoDB og Node.js

  1. Forespørgsel efter data i en MongoDB database - Bruger MongoDB driver kan vi også hente data fra MongoDB database. Nedenstående afsnit viser, hvordan vi kan bruge driveren til at hente alle dokumenter fra vores medarbejdersamling i vores EmployeeDB-database. Dette er kollektionen i vores MongoDB database, som indeholder alle medarbejderrelaterede dokumenter. Hvert dokument har et objekt-id, medarbejdernavn og medarbejder-id til at definere værdierne for dokumentet.

Ved brug af MongoDB og 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);

    });
});

Kodeforklaring:

  1. I det første trin opretter vi en markør (En markør er en markør, som bruges til at pege på de forskellige poster hentet fra en database. Markøren bruges derefter til at iterere gennem de forskellige poster i databasen. Her definerer vi en variabelnavn kaldet cursor, som vil blive brugt til at gemme markøren til de poster, der er hentet fra databasen ), som peger på de poster, der hentes fra MongoDb-samlingen. Vi har også mulighed for at specificere samlingen 'Medarbejder', hvorfra vi kan hente posterne. Find()-funktionen bruges til at angive, at vi ønsker at hente alle dokumenterne fra MongoDB samling.
  2. Vi itererer nu gennem vores markør, og for hvert dokument i markøren skal vi udføre en funktion.
  3. Vores funktion er simpelthen at udskrive indholdet af hvert dokument til konsollen.

Bemærk: - Det er også muligt at hente en bestemt post fra en database. Dette kan gøres ved at angive søgebetingelsen i find()-funktionen. Antag for eksempel, at hvis du bare ville hente posten, som har medarbejdernavnet som Guru99, så kan denne erklæring skrives som følger

var cursor=db.collection('Employee').find({EmployeeName: "guru99"})

Hvis ovenstående kode udføres korrekt, vil følgende output blive vist i din konsol.

Output:

Ved brug af MongoDB og Node.js

Fra udgangen,

  • Du vil tydeligt kunne se, at alle dokumenter fra samlingen er hentet. Dette er muligt ved at bruge find()-metoden for mongoDB-forbindelsen (db) og gentage alle dokumenterne ved hjælp af markøren.
  1. Indsættelse af dokumenter i en samling – Dokumenter kan indsættes i en samling ved hjælp af insertOne-metoden leveret af MongoDB bibliotek. Nedenstående kodestykke viser, hvordan vi kan indsætte et dokument i en mongoDB-samling.

Ved brug af MongoDB og 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"
    });
}); 

Kodeforklaring:

  1. Her bruger vi insertOne-metoden fra MongoDB bibliotek for at indsætte et dokument i medarbejdersamlingen.
  2. Vi specificerer dokumentdetaljerne for, hvad der skal indsættes i medarbejdersamlingen.

Hvis du nu tjekker indholdet af din MongoDB database, vil du finde posten med Medarbejder-id på 4 og Medarbejdernavn på "Ny Medarbejder" indsat i Medarbejdersamlingen.

Bemærk: Konsollen vil ikke vise noget output, fordi posten er ved at blive indsat i databasen, og ingen output kan vises her.

For at kontrollere, at dataene er blevet korrekt indsat i databasen, skal du udføre følgende kommandoer i MongoDB

  1. Brug EmployeeDB
  2. db.Employee.find({Employeeid :4 })

Den første erklæring sikrer, at du er forbundet til EmployeeDb-databasen. Den anden erklæring søger efter posten, som har medarbejder-id'et 4.

  1. Opdatering af dokumenter i en samling – Dokumenter kan opdateres i en samling ved hjælp af updateOne-metoden leveret af MongoDB bibliotek. Nedenstående kodestykke viser, hvordan man opdaterer et dokument i en mongoDB-samling.

Ved brug af MongoDB og 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"
        }
    });
}); 

Kodeforklaring:

  1. Her bruger vi "updateOne" metoden fra MongoDB bibliotek, som bruges til at opdatere et dokument i en mongoDB-samling.
  2. Vi specificerer søgekriterierne for hvilket dokument, der skal opdateres. I vores tilfælde ønsker vi at finde dokumentet, der har medarbejdernavnet "NewEmployee."
  3. Vi ønsker derefter at indstille værdien af ​​EmployeeName for dokumentet fra "NewEmployee" til "Mohan".

Hvis du nu tjekker indholdet af din MongoDB database, vil du finde posten med medarbejder-id på 4 og medarbejdernavn på "Mohan" opdateret i medarbejdersamlingen.

For at kontrollere, at dataene er blevet korrekt opdateret i databasen, skal du udføre følgende kommandoer i MongoDB

  1. Brug EmployeeDB
  2. db.Employee.find({Employeeid :4 })

Den første erklæring sikrer, at du er forbundet til EmployeeDb-databasen. Den anden erklæring søger efter posten, som har medarbejder-id'et 4.

  1. Sletning af dokumenter i en samling – Dokumenter kan slettes i en samling ved hjælp af "deleteOne"-metoden leveret af MongoDB bibliotek. Nedenstående kodestykke viser, hvordan man sletter et dokument i en mongoDB-samling.

Ved brug af MongoDB og Node.js

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';

MongoClient.connect(url, function(err, db) {

    db.collection('Employee').deleteOne(

        {
            "EmployeeName": "Mohan"
        }

    );
}); 

Kodeforklaring:

  1. Her bruger vi "deleteOne"-metoden fra MongoDB bibliotek, som bruges til at slette et dokument i en mongoDB-samling.
  2. Vi specificerer søgekriterierne for hvilket dokument, der skal slettes. I vores tilfælde ønsker vi at finde dokumentet, der har medarbejdernavnet "Mohan" og slette dette dokument.

Hvis du nu tjekker indholdet af din MongoDB database, vil du finde posten med Medarbejder-id på 4 og Medarbejdernavn på "Mohan" slettet fra Medarbejdersamlingen.

For at kontrollere, at dataene er blevet korrekt opdateret i databasen, skal du udføre følgende kommandoer i MongoDB

  1. Brug EmployeeDB
  2. db.Employee.find()

Den første erklæring sikrer, at du er forbundet til EmployeeDb-databasen. Den anden erklæring søger og viser alle poster i medarbejdersamlingen. Her kan du se, om posten er blevet slettet eller ej.

Sådan bygger du en node express-app med MongoDB at gemme og servere indhold

Opbygning af en applikation med en kombination af både at bruge ekspres og MongoDB er ret almindeligt i dag.

Når du arbejder med JavaScript webbaserede applikationer, vil man normalt her af betegnelsen MEAN stack.

  • Udtrykket MEAN stack refererer til en samling af JavaScriptbaserede teknologier, der bruges til at udvikle webapplikationer.
  • MEAN er et akronym for MongoDB, ExpressJS, AngularJS, og Node.js.

Derfor er det altid godt at forstå, hvordan Node.js og MongoDB arbejde sammen om at levere applikationer, der interagerer med backend-databaser.

Lad os se på et simpelt eksempel på, hvordan vi kan bruge "express" og "MongoDB" sammen. Vores eksempel vil gøre brug af den samme medarbejdersamling i MongoDB MedarbejderDB database.

Vi vil nu inkorporere Express for at vise dataene på vores webside, når det bliver anmodet af brugeren. Når vores applikation kører på Node.js, skal man muligvis browse til URL'en http://localhost:3000/Employeeid.

Når siden er lanceret, vil alle medarbejder-id'erne i Medarbejdersamlingen blive vist. Så lad os se kodestykket i sektioner, som giver os mulighed for at opnå dette.

Trin 1) Definer alle de biblioteker, der skal bruges i vores applikation, som i vores tilfælde er både MongoDB og ekspresbibliotek.

Byg en Node Express-app med MongoDB

Kodeforklaring:

  1. Vi er ved at definere vores 'express'-bibliotek, som vil blive brugt i vores applikation.
  2. Vi definerer vores 'MongoDB' bibliotek, som vil blive brugt i vores applikation til at oprette forbindelse til vores MongoDB databasen.
  3. Her definerer vi URL'en til vores database, der skal oprettes forbindelse til.
  4. Endelig er vi ved at definere en streng, som skal bruges til at gemme vores samling af medarbejder-id, som skal vises i browseren senere.

Trin 2) I dette trin vil vi nu hente alle posterne i vores 'Medarbejder'-samling og arbejde med dem i overensstemmelse hermed.

Byg en Node Express-app med MongoDB

Kodeforklaring:

  1. Vi er ved at oprette en rute til vores applikation kaldet 'Medarbejderid'. Så hver gang nogen browser til http://localhost:3000/Employeeid af vores applikation vil kodestykket, der er defineret for denne rute, blive udført.
  2. Her får vi alle posterne i vores 'Employee'-samling gennem kommandoen db.collection('Employee').find(). Vi tildeler derefter denne samling til en variabel kaldet cursor. Ved at bruge denne markørvariabel vil vi være i stand til at gennemse alle samlingens poster.
  3. Vi bruger nu funktionen cursor.each() til at navigere gennem alle posterne i vores samling. For hver post skal vi definere et kodestykke om, hvad der skal gøres, når hver post er tilgået.
  4. Endelig ser vi, at hvis den returnerede post ikke er nul, så tager vi medarbejderen via kommandoen "vare.Medarbejder". Resten af ​​koden er blot for at konstruere en ordentlig HTML-kode, som gør det muligt for vores resultater at blive vist korrekt i browseren.

Trin 3) I dette trin vil vi sende vores output til websiden og få vores applikation til at lytte på en bestemt port.

Byg en Node Express-app med MongoDB

Kodeforklaring:

  1. Her sender vi hele indholdet, som blev konstrueret i det tidligere trin, til vores webside. Parameteren 'res' giver os mulighed for at sende indhold til vores webside som et svar.
  2. Vi får hele vores Node.js-applikation til at lytte på port 3000.

Output:

Byg en Node Express-app med MongoDB

Fra udgangen,

  • Det viser tydeligt, at alle medarbejder-id'erne i medarbejdersamlingen blev hentet. Dette er fordi vi bruger MongoDB driver til at oprette forbindelse til databasen og hente alle medarbejderposter og efterfølgende brugte "express" til at vise posterne.

Her er koden til din reference

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() {}); 

Bemærk: cursor.hver måske forældet baseret på version af din MongoDB chauffør. Du kan tilføje //noinspection JSDeprecatedSymbols før cursor.each for at omgå problemet. Alternativt kan du bruge forEach. Nedenfor er prøvekoden ved hjælp af 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() {});

Resumé

  • Node.js bruges i forbindelse med NoSQL databaser til at bygge en masse moderne webapplikationer. Nogle af de almindeligt anvendte databaser er MySQL og MongoDB.
  • Et af de almindelige moduler, der bruges til at arbejde med MongoDB databaser er et modul kaldet 'MongoDB.' Dette modul installeres via Node-pakkehåndteringen.
  • Med MongoDB modul, er det muligt at forespørge efter poster i en samling og udføre de normale opdaterings-, sletnings- og indsættelsesoperationer.
  • Endelig er en af ​​de moderne praksisser at bruge den udtrykkelige ramme sammen med MongoDB at levere moderne applikationer. Express-rammen kan gøre brug af de data, der returneres af MongoDB driver og vise dataene til brugeren på websiden i overensstemmelse hermed.