Node.js MongoDB Tutorial met voorbeelden

Bijna alle moderne webapplicaties hebben een soort gegevensopslagsysteem aan de achterkant. Als u bijvoorbeeld het geval van een webwinkelapplicatie neemt, worden gegevens zoals de prijs van een artikel in de database opgeslagen.

Het Node js-framework kan werken met databases met zowel relationele (zoals Oracle en MS SQL Server) en niet-relationele databases (zoals MongoDB). In deze tutorial zullen we zien hoe we databases kunnen gebruiken vanuit Node js-applicaties.

Node.js en NoSQL-databases

Door de jaren heen zijn NoSQL-databases zoals MongoDB en voor MySQL zijn behoorlijk populair geworden als databases voor het opslaan van gegevens. Het vermogen van deze databases om elk type inhoud op te slaan, en vooral in elk type formaat, maakt deze databases zo beroemd.

Node.js heeft de mogelijkheid om met beide te werken MySQL en MongoDB als databanken. Om een ​​van deze databases te kunnen gebruiken, moet u de vereiste modules downloaden en gebruiken met behulp van de Node-pakketbeheerder.

Voor MySQLde vereiste module heet “mysql” en voor het gebruik MongoDB de vereiste module die moet worden geïnstalleerd is “Mongoose.”

Met deze modules kunt u de volgende bewerkingen uitvoeren in Node.js

  1. Beheer de verbindingspooling – Hier kunt u het aantal verbindingen opgeven MySQL databaseverbindingen die door Node.js moeten worden onderhouden en opgeslagen.
  2. Maak en sluit een verbinding met een database. In beide gevallen kunt u een callback-functie bieden die kan worden aangeroepen wanneer de verbindingsmethoden “create” en “close” worden uitgevoerd.
  3. Er kunnen query's worden uitgevoerd om gegevens uit de respectieve databases te halen om gegevens op te halen.
  4. Gegevensmanipulatie, zoals het invoegen van gegevens, verwijderen en bijwerken van gegevens, kan ook met deze modules worden bereikt.

Voor de overige onderwerpen gaan we kijken hoe we hiermee aan de slag kunnen MongoDB databases binnen Node.js.

gebruik MongoDB en Node.js

Zoals besproken in het eerdere onderwerp, MongoDB is een van de meest populaire databases die samen met Node.js wordt gebruikt.

Tijdens dit hoofdstuk zullen we het zien

Hoe we verbindingen kunnen leggen met a MongoDB databank

Hoe we de normale bewerkingen van het lezen van gegevens uit een database kunnen uitvoeren, evenals het invoegen, verwijderen en bijwerken van records in een MongoDB database.

Laten we, voor de doeleinden van dit hoofdstuk, aannemen dat we het onderstaande hebben MongoDB gegevens aanwezig.

Databasenaam: EmployeeDB

Collectienaam: Medewerker

Documents
{
	{Employeeid : 1, Employee Name : Guru99},
	{Employeeid : 2, Employee Name : Joe},
	{Employeeid : 3, Employee Name : Martin},
}
  1. De NPM-modules installeren

U hebt een stuurprogramma nodig om toegang te krijgen tot Mongo vanuit een Node-applicatie. Er zijn een aantal Mongo-stuurprogramma's beschikbaar, maar MongoDB behoort tot de meest populaire. Om de MongoDB module, voer de onderstaande opdracht uit

npm mongodb installeren

  1. Een verbinding maken en sluiten met een MongoDB database. Het onderstaande codefragment laat zien hoe u een verbinding met een MongoDB database.

gebruik MongoDB en Node.js

Code Verklaring:

  1. De eerste stap is het opnemen van de mangoestmodule, wat wordt gedaan via de functie require. Zodra deze module is geïnstalleerd, kunnen we de noodzakelijke functies die in deze module beschikbaar zijn, gebruiken om verbindingen met de database te maken.
  2. Vervolgens specificeren we onze verbindingsreeks met de database. In de connect-string worden drie sleutelwaarden doorgegeven.
  • De eerste is 'mongodb', wat aangeeft dat we verbinding maken met een mongoDB-database.
  • De volgende is 'localhost', wat betekent dat we verbinding maken met een database op de lokale machine.
  • De volgende is 'EmployeeDB', de naam van de database die is gedefinieerd in onze MongoDB database.
  1. De volgende stap is om daadwerkelijk verbinding te maken met onze database. De connect-functie neemt onze URL over en heeft de mogelijkheid om een ​​callback-functie te specificeren. Deze wordt aangeroepen wanneer de verbinding met de database wordt geopend. Dit geeft ons de mogelijkheid om te weten of de databaseverbinding succesvol was of niet.
  2. In de functie schrijven we de string “Verbinding tot stand gebracht” naar de console om aan te geven dat er een succesvolle verbinding tot stand is gebracht.
  3. Ten slotte sluiten we de verbinding met behulp van de instructie db.close.

Als de bovenstaande code correct wordt uitgevoerd, wordt de string “Connected” naar de console geschreven, zoals hieronder weergegeven.

gebruik MongoDB en Node.js

  1. Gegevens opvragen in a MongoDB databank - De ... gebruiken MongoDB driver kunnen we ook gegevens ophalen uit de MongoDB database. In het onderstaande gedeelte ziet u hoe we het stuurprogramma kunnen gebruiken om alle documenten uit onze werknemerscollectie op te halen in onze EmployeeDB-database. Dit is de collectie in onze MongoDB database, waarin alle medewerkersgerelateerde documenten zijn opgenomen. Elk document heeft een object-ID, werknemersnaam en werknemers-ID om de waarden van het document te definiëren.

gebruik MongoDB en 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 Verklaring:

  1. In de eerste stap maken we een cursor (Een cursor is een aanwijzer die wordt gebruikt om te verwijzen naar de verschillende records die uit een database zijn opgehaald. De cursor wordt vervolgens gebruikt om door de verschillende records in de database te itereren. Hier definiëren we een variabelenaam genaamd cursor die zal worden gebruikt om de aanwijzer naar de records die uit de database zijn opgehaald op te slaan.) die verwijst naar de records die uit de MongoDb-collectie worden opgehaald. We hebben ook de mogelijkheid om de collectie 'Employee' te specificeren waaruit de records moeten worden opgehaald. De functie find() wordt gebruikt om aan te geven dat we alle documenten uit de MongoDB collectie.
  2. We doorlopen nu onze cursor en voor elk document in de cursor gaan we een functie uitvoeren.
  3. Onze functie is eenvoudigweg het afdrukken van de inhoud van elk document naar de console.

Notitie: - Het is ook mogelijk om een ​​bepaald record uit een database op te halen. Dit kunt u doen door de zoekvoorwaarde op te geven in de functie find(). Stel dat u bijvoorbeeld alleen het record met de werknemersnaam Guru99 wilt ophalen, dan kan deze verklaring als volgt worden geschreven

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

Als de bovenstaande code succesvol is uitgevoerd, wordt de volgende uitvoer in uw console weergegeven.

Output:

gebruik MongoDB en Node.js

Van de uitvoer,

  • U zult duidelijk kunnen zien dat alle documenten uit de collectie worden opgehaald. Dit is mogelijk door de find()-methode van de mongoDB-verbinding (db) te gebruiken en door alle documenten te itereren met behulp van de cursor.
  1. Documenten in een verzameling invoegen – Documenten kunnen in een collectie worden ingevoegd met behulp van de insertOne-methode van de MongoDB bibliotheek. Het onderstaande codefragment laat zien hoe we een document in een mongoDB-collectie kunnen invoegen.

gebruik MongoDB en 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 Verklaring:

  1. Hier gebruiken we de insertOne-methode uit de MongoDB bibliotheek om een ​​document in de werknemerscollectie in te voegen.
  2. We specificeren de documentdetails van wat er in de werknemerscollectie moet worden ingevoegd.

Als u nu de inhoud van uw MongoDB database, vindt u het record met Employeeid van 4 en EmployeeName van “NewEmployee” ingevoegd in de Employee-verzameling.

Opmerking: De console toont geen uitvoer omdat het record in de database wordt ingevoegd en hier geen uitvoer kan worden getoond.

Om te controleren of de gegevens correct in de database zijn ingevoegd, moet u de volgende opdrachten uitvoeren in MongoDB

  1. Gebruik EmployeeDB
  2. db.Employee.find({Werknemerid :4 })

De eerste verklaring zorgt ervoor dat u verbonden bent met de EmployeeDb-database. De tweede verklaring zoekt naar het record met de werknemers-id 4.

  1. Documenten in een collectie bijwerken – Documenten kunnen in een collectie worden bijgewerkt met behulp van de updateOne-methode van de MongoDB bibliotheek. Het onderstaande codefragment laat zien hoe u een document in een mongoDB-collectie kunt bijwerken.

gebruik MongoDB en 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 Verklaring:

  1. Hier gebruiken we de “updateOne” -methode van de MongoDB bibliotheek, die wordt gebruikt om een ​​document in een mongoDB-collectie bij te werken.
  2. We specificeren de zoekcriteria van welk document moet worden bijgewerkt. In ons geval willen we het document vinden met de EmployeeName 'NewEmployee'.
  3. Vervolgens willen we de waarde van de EmployeeName van het document instellen van “NewEmployee” naar “Mohan”.

Als u nu de inhoud van uw MongoDB database, vindt u het record met Employeeid van 4 en EmployeeName van “Mohan” bijgewerkt in de Employee-verzameling.

Om te controleren of de gegevens correct zijn bijgewerkt in de database, moet u de volgende opdrachten uitvoeren in MongoDB

  1. Gebruik EmployeeDB
  2. db.Employee.find({Werknemerid :4 })

De eerste verklaring zorgt ervoor dat u verbonden bent met de EmployeeDb-database. De tweede verklaring zoekt naar het record met de werknemers-id 4.

  1. Documenten in een collectie verwijderen – Documenten kunnen uit een verzameling worden verwijderd met behulp van de “deleteOne”-methode van de MongoDB bibliotheek. Het onderstaande codefragment laat zien hoe u een document in een mongoDB-collectie verwijdert.

gebruik MongoDB en 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 Verklaring:

  1. Hier gebruiken we de “deleteOne” -methode uit de MongoDB bibliotheek, die wordt gebruikt om een ​​document in een mongoDB-verzameling te verwijderen.
  2. We specificeren de zoekcriteria van welk document moet worden verwijderd. In ons geval willen we het document vinden met de werknemersnaam “Mohan” en dit document verwijderen.

Als u nu de inhoud van uw MongoDB database, vindt u het record met Employeeid van 4 en EmployeeName van “Mohan” verwijderd uit de Employee-verzameling.

Om te controleren of de gegevens correct zijn bijgewerkt in de database, moet u de volgende opdrachten uitvoeren in MongoDB

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

De eerste verklaring zorgt ervoor dat u verbonden bent met de EmployeeDb-database. Met de tweede verklaring worden alle records in de werknemerscollectie doorzocht en weergegeven. Hier kunt u zien of het record is verwijderd of niet.

Hoe u een node express-app kunt bouwen MongoDB om inhoud op te slaan en te serveren

Een applicatie bouwen met een combinatie van zowel het gebruik van express als MongoDB is tegenwoordig heel gebruikelijk.

Bij het werken met JavaScript webgebaseerde applicaties, normaal gesproken spreekt men hier van de term MEAN-stack.

  • De term MEAN-stapel verwijst naar een verzameling van JavaOp scripts gebaseerde technologieën voor het ontwikkelen van webapplicaties.
  • MEAN is een acroniem voor MongoDB, ExpressJS, AngularJS, en Node.js.

Daarom is het altijd goed om te begrijpen hoe Node.js en MongoDB werken samen om applicaties te leveren die communiceren met backend-databases.

Laten we eens kijken naar een eenvoudig voorbeeld van hoe we “express” en “MongoDB" samen. In ons voorbeeld wordt gebruik gemaakt van dezelfde werknemersverzameling in de MongoDB EmployeeDB-database.

We zullen nu Express integreren om de gegevens op onze webpagina weer te geven wanneer daarom door de gebruiker wordt gevraagd. Wanneer onze applicatie op Node.js draait, moet u mogelijk naar de URL bladeren http://localhost:3000/Employeeid.

Wanneer de pagina wordt gelanceerd, worden alle werknemers-id's in de Employee-collectie weergegeven. Laten we dus het codefragment in secties bekijken waarmee we dit kunnen bereiken.

Stap 1) Definieer alle bibliotheken die in onze applicatie moeten worden gebruikt, wat in ons geval zowel de MongoDB en expressbibliotheek.

Bouw een Node Express-app met MongoDB

Code Verklaring:

  1. We definiëren onze 'express'-bibliotheek, die in onze applicatie zal worden gebruikt.
  2. We definiëren onze 'MongoDB' bibliotheek, die in onze applicatie zal worden gebruikt om verbinding te maken met onze MongoDB database.
  3. Hier definiëren we de URL van onze database waarmee we verbinding moeten maken.
  4. Tot slot definiëren we een tekenreeks waarin we de werknemers-ID's opslaan. Deze moeten later in de browser worden weergegeven.

Stap 2) In deze stap gaan we nu alle records in onze 'Werknemer'-collectie ophalen en dienovereenkomstig ermee werken.

Bouw een Node Express-app met MongoDB

Code Verklaring:

  1. We maken een route naar onze applicatie genaamd 'Employeeid'. Dus wanneer iemand ernaar surft http://localhost:3000/Employeeid van onze applicatie wordt het codefragment dat voor deze route is gedefinieerd, uitgevoerd.
  2. Hier halen we alle records in onze 'Employee'-verzameling op via de opdracht db.collection('Employee').find(). Vervolgens wijzen we deze verzameling toe aan een variabele genaamd cursor. Met behulp van deze cursorvariabele kunnen we door alle records van de collectie bladeren.
  3. We gebruiken nu de functie cursor.each() om door alle records van onze verzameling te navigeren. Voor elke record gaan we een codefragment definiëren over wat er moet gebeuren als elke record wordt geopend.
  4. Ten slotte zien we dat als de geretourneerde record niet null is, we de werknemer via het commando "item.Employeeid" nemen. De rest van de code is gewoon om een ​​correcte HTML-code te construeren die ervoor zorgt dat onze resultaten correct in de browser worden weergegeven.

Stap 3) In deze stap sturen we onze uitvoer naar de webpagina en laten we onze applicatie op een bepaalde poort luisteren.

Bouw een Node Express-app met MongoDB

Code Verklaring:

  1. Hier sturen we de volledige inhoud die in de eerdere stap is samengesteld naar onze webpagina. Met de parameter 'res' kunnen we als antwoord inhoud naar onze webpagina sturen.
  2. We laten onze volledige Node.js-applicatie luisteren op poort 3000.

Output:

Bouw een Node Express-app met MongoDB

Van de uitvoer,

  • Hieruit blijkt duidelijk dat alle werknemers-id's in de werknemersverzameling zijn opgehaald. Dit komt omdat wij gebruik maken van de MongoDB driver om verbinding te maken met de database en alle werknemersrecords op te halen en vervolgens "express" te gebruiken om de records weer te geven.

Hier is de code ter referentie

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

Opmerking: cursor.each is mogelijk verouderd op basis van de versie van uw MongoDB bestuurder. U kunt //noinspection JSDeprecatedSymbols vóór cursor.each toevoegen om het probleem te omzeilen. Als alternatief kunt u forEach gebruiken. Hieronder ziet u de voorbeeldcode met 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() {});

Samenvatting

  • Node.js wordt gebruikt in combinatie met NoSQL databases om veel moderne webapplicaties te bouwen. Enkele van de veelgebruikte databases zijn: MySQL en MongoDB.
  • Een van de veelgebruikte modules om mee te werken MongoDB databases is een module genaamd 'MongoDB.' Deze module wordt geïnstalleerd via de Node-pakketbeheerder.
  • Met de MongoDB Met de module is het mogelijk om records in een verzameling op te vragen en de gebruikelijke bewerkingen voor bijwerken, verwijderen en invoegen uit te voeren.
  • Ten slotte is een van de moderne praktijken het gebruik van het uitdrukkelijke raamwerk MongoDB om moderne toepassingen te leveren. Het Express-framework kan gebruik maken van de gegevens die worden geretourneerd door de MongoDB driver en geef de gegevens dienovereenkomstig weer aan de gebruiker op de webpagina.