Vrijwel 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) als niet-relationele databases (zoals MongoDB). In deze tutorial zullen we zien hoe we databases kunnen gebruiken vanuit Node js-applicaties.
In deze tutorial leer je-
- Node.js en NoSQL-databases
- MongoDB en Node.js gebruiken
- Een node-express-app bouwen met MongoDB om inhoud op te slaan en aan te bieden
Node.js en NoSQL-databases
In de loop der jaren zijn NoSQL-databases zoals MongoDB en MySQL 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, is wat deze databases zo beroemd maakt.
Node.js heeft de mogelijkheid om te werken met zowel MySQL als MongoDB als databases. Om een van deze databases te gebruiken, moet u de vereiste modules downloaden en gebruiken met behulp van de Node-pakketbeheerder.
Voor MySQL heet de vereiste module "mysql" en voor het gebruik van MongoDB is de vereiste module die moet worden geïnstalleerd "Mongoose".
Met deze modules kunt u de volgende bewerkingen uitvoeren in Node.js
- Beheer de pooling van verbindingen - Hier kunt u het aantal MySQL-databaseverbindingen specificeren dat moet worden onderhouden en opgeslagen door Node.js.
- Maak en sluit een verbinding met een database. In beide gevallen kunt u een callback-functie voorzien die kan worden aangeroepen wanneer de verbindingsmethoden "create" en "close" worden uitgevoerd.
- Query's kunnen worden uitgevoerd om gegevens uit respectieve databases op te halen om gegevens op te halen.
- Gegevensmanipulatie, zoals het invoegen van gegevens, het verwijderen en bijwerken van gegevens, kan ook worden bereikt met deze modules.
Voor de overige onderwerpen zullen we bekijken hoe we kunnen werken met MongoDB-databases binnen Node.js.
MongoDB en Node.js gebruiken
Zoals besproken in het eerdere onderwerp, is MongoDB een van de meest populaire databases die samen met Node.js. wordt gebruikt.
Tijdens dit hoofdstuk zullen we zien
Hoe we verbindingen kunnen leggen met een MongoDB-database
Hoe we de normale bewerkingen kunnen uitvoeren van het lezen van gegevens uit een database en het invoegen, verwijderen en bijwerken van records in een MongoDB-database.
Laten we voor dit hoofdstuk aannemen dat we over de onderstaande MongoDB-gegevens beschikken.
Databasenaam: EmployeeDB
Collectienaam: Medewerker
Documents{{Employeeid : 1, Employee Name : Guru99},{Employeeid : 2, Employee Name : Joe},{Employeeid : 3, Employee Name : Martin},}
- De NPM-modules installeren
U hebt een stuurprogramma nodig om Mongo te openen vanuit een Node-toepassing. Er zijn een aantal Mongo-stuurprogramma's beschikbaar, maar MongoDB is een van de meest populaire. Voer de onderstaande opdracht uit om de MongoDB-module te installeren
npm installeer mongodb
- Verbinding maken en verbreken met een MongoDB-database. Het onderstaande codefragment laat zien hoe u een verbinding met een MongoDB-database maakt en verbreekt.
Code Verklaring:
- De eerste stap is om de mangoestmodule op te nemen, die wordt gedaan via de functie vereisen. Als deze module eenmaal is geïnstalleerd, kunnen we de nodige functies gebruiken die beschikbaar zijn in deze module om verbindingen met de database tot stand te brengen.
- Vervolgens specificeren we onze verbindingsreeks naar de database. In de connect string zijn er 3 sleutelwaarden die worden 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 computer.
- De volgende is 'EmployeeDB', de naam van de database die is gedefinieerd in onze MongoDB-database.
- De volgende stap is om daadwerkelijk verbinding te maken met onze database. De connect-functie neemt onze URL op en heeft de mogelijkheid om een callback-functie op te geven. Het 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.
- 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.
- Ten slotte sluiten we de verbinding met de instructie db.close.
Als de bovenstaande code correct wordt uitgevoerd, wordt de string "Connected" naar de console geschreven zoals hieronder weergegeven.
- Gegevens opvragen in een MongoDB-database - Met behulp van de MongoDB-driver kunnen we ook gegevens ophalen uit de MongoDB-database.
Het onderstaande gedeelte laat zien hoe we de driver kunnen gebruiken om alle documenten uit onze werknemerscollectie op te halen in onze EmployeeDB-database. Dit is de collectie in onze MongoDB-database, die alle medewerker-gerelateerde documenten bevat. Elk document heeft een object-ID, een werknemersnaam en een werknemers-ID om de waarden van het document te definiëren.
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:
-
In de eerste stap maken we een cursor (een cursor is een aanwijzer die wordt gebruikt om naar de verschillende records te wijzen die uit een database zijn opgehaald. De cursor wordt vervolgens gebruikt om door de verschillende records in de database te lopen. Hier definiëren we een variabelenaam genaamd cursor die zal worden gebruikt om de pointer op te slaan naar de records die uit de database zijn opgehaald.) die verwijst naar de records die zijn opgehaald uit de MongoDb-verzameling. We hebben ook de mogelijkheid om de collectie 'Medewerker' te specificeren waaruit de records moeten worden opgehaald. De functie find () wordt gebruikt om aan te geven dat we alle documenten uit de MongoDB-verzameling willen ophalen.
-
We itereren nu door onze cursor en voor elk document in de cursor gaan we een functie uitvoeren.
-
Onze functie is gewoon om de inhoud van elk document naar de console af te drukken.
Opmerking: - Het is ook mogelijk om een bepaald record uit een database op te halen. Dit kan worden gedaan door de zoekvoorwaarde op te geven in de functie find (). Stel dat u alleen het record wilt ophalen met de naam van de werknemer als Guru99, dan kan deze verklaring als volgt worden geschreven
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
Als de bovenstaande code met succes is uitgevoerd, wordt de volgende uitvoer weergegeven in uw console.
Uitgang:
Van de output,
- U kunt duidelijk zien dat alle documenten uit de collectie zijn opgehaald. Dit is mogelijk door de methode find () van de mongoDB-verbinding (db) te gebruiken en door alle documenten te itereren met behulp van de cursor.
- Documenten in een collectie invoegen - Documenten kunnen in een collectie worden ingevoegd met de methode insertOne van de MongoDB-bibliotheek. Het onderstaande codefragment laat zien hoe we een document in een mongoDB-verzameling kunnen invoegen.
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:
- Hier gebruiken we de insertOne-methode uit de MongoDB-bibliotheek om een document in de werknemerscollectie in te voegen.
- We specificeren de documentdetails van wat er in de werknemerscollectie moet worden ingevoegd.
Als u nu de inhoud van uw MongoDB-database controleert, vindt u het record met Employeeid van 4 en EmployeeName van "NewEmployee" ingevoegd in de Employee-collectie.
Opmerking: de console zal geen uitvoer tonen omdat het record in de database wordt ingevoegd en er kan hier geen uitvoer worden weergegeven.
Om te controleren of de gegevens correct in de database zijn ingevoegd, moet u de volgende opdrachten uitvoeren in MongoDB
- Gebruik EmployeeDB
- db.Employee.find ({Employeeid: 4})
Het eerste statement zorgt ervoor dat je verbonden bent met de EmployeeDb database. Het tweede statement zoekt naar het record met de werknemer-ID 4.
- Documenten in een collectie bijwerken - Documenten in een collectie kunnen worden bijgewerkt met behulp van de updateOne-methode van de MongoDB-bibliotheek. Het onderstaande codefragment laat zien hoe u een document in een mongoDB-verzameling kunt bijwerken.
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:
- Hier gebruiken we de "updateOne" -methode uit de MongoDB-bibliotheek, die wordt gebruikt om een document in een mongoDB-verzameling bij te werken.
- We specificeren de zoekcriteria van welk document moet worden bijgewerkt. In ons geval willen we het document vinden met de EmployeeName "NewEmployee".
- We willen dan de waarde van de EmployeeName van het document instellen van "NewEmployee" naar "Mohan".
Als u nu de inhoud van uw MongoDB-database controleert, vindt u het record met Employeeid van 4 en EmployeeName van "Mohan" bijgewerkt in de Employee-collectie.
Om te controleren of de gegevens correct zijn bijgewerkt in de database, moet u de volgende opdrachten uitvoeren in MongoDB
- Gebruik EmployeeDB
- db.Employee.find ({Employeeid: 4})
Het eerste statement zorgt ervoor dat je verbonden bent met de EmployeeDb database. Het tweede statement zoekt naar het record met de werknemer-ID 4.
- Documenten in een collectie verwijderen - Documenten kunnen in een collectie worden verwijderd met behulp van de "deleteOne" -methode van de MongoDB-bibliotheek. Het onderstaande codefragment laat zien hoe u een document in een mongoDB-verzameling verwijdert.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').deleteOne({"EmployeeName": "Mohan"});});
Code Verklaring:
- Hier gebruiken we de "deleteOne" -methode uit de MongoDB-bibliotheek, die wordt gebruikt om een document in een mongoDB-verzameling te verwijderen.
- We specificeren de zoekcriteria van welk document moet worden verwijderd. In ons geval willen we het document met de EmployeeName "Mohan" zoeken en dit document verwijderen.
Als u nu de inhoud van uw MongoDB-database controleert, vindt u het record met Employeeid van 4 en EmployeeName van "Mohan" verwijderd uit de Employee-collectie.
Om te controleren of de gegevens correct zijn bijgewerkt in de database, moet u de volgende opdrachten uitvoeren in MongoDB
- Gebruik EmployeeDB
- db.Employee.find ()
Het eerste statement zorgt ervoor dat je verbonden bent met de EmployeeDb database. Het tweede overzicht zoekt en toont alle records in de werknemerscollectie. Hier kunt u zien of het record is verwijderd of niet.
Een node-express-app bouwen met MongoDB om inhoud op te slaan en aan te bieden
Het bouwen van een applicatie met een combinatie van zowel express als MongoDB is tegenwoordig vrij gebruikelijk.
Bij het werken met JavaScript-webgebaseerde applicaties, zal men hier normaal gesproken de term MEAN-stack gebruiken.
- De term MEAN-stack verwijst naar een verzameling op JavaScript gebaseerde technologieën die worden gebruikt om webtoepassingen te ontwikkelen.
- MEAN is een afkorting voor MongoDB, ExpressJS, AngularJS en Node.js.
Daarom is het altijd goed om te begrijpen hoe Node.js en MongoDB samenwerken om applicaties te leveren die communiceren met backend-databases.
Laten we eens kijken naar een eenvoudig voorbeeld van hoe we "express" en "MongoDB" samen kunnen gebruiken. Ons voorbeeld maakt gebruik van dezelfde werknemerscollectie in de MongoDB EmployeeDB-database.
We zullen nu Express opnemen om de gegevens op onze webpagina weer te geven wanneer de gebruiker daarom vraagt. Wanneer onze applicatie op Node.js draait, kan het nodig zijn om naar de URL http: // localhost: 3000 / Employeeid te bladeren .
Wanneer de pagina wordt geopend, worden alle werknemers-ID's in de werknemerscollectie 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- als de express-bibliotheek is.
Code Verklaring:
- We definiëren onze 'express'-bibliotheek, die in onze applicatie zal worden gebruikt.
- We definiëren onze 'express'-bibliotheek, die zal worden gebruikt in onze applicatie om verbinding te maken met onze MongoDB-database.
- Hier definiëren we de URL van onze database om verbinding mee te maken.
- Ten slotte definiëren we een string die zal worden gebruikt om onze verzameling werknemers-ID's op te slaan die later in de browser moeten worden weergegeven.
Stap 2) In deze stap gaan we nu alle records in onze verzameling 'Werknemers' ophalen en dienovereenkomstig ermee werken.
Code Verklaring:
- We creëren een route naar onze applicatie met de naam 'Employeeid'. Dus wanneer iemand naar http: // localhost: 3000 / Employeeid van onze applicatie bladert , wordt het codefragment dat voor deze route is gedefinieerd, uitgevoerd.
- Hier krijgen we alle records in onze 'Werknemer'-verzameling via de opdracht db.collection (' Werknemer '). Find (). We wijzen deze verzameling vervolgens toe aan een variabele met de naam cursor. Met behulp van deze cursorvariabele kunnen we door alle records van de collectie bladeren.
- We gebruiken nu de functie cursor.each () om door alle records van onze collectie te navigeren. Voor elk record gaan we een codefragment definiëren over wat te doen wanneer elk record wordt geopend.
- Ten slotte zien we dat als het geretourneerde record niet null is, we de medewerker via het commando "item.Employeeid" nemen. De rest van de code is alleen bedoeld om een goede HTML-code samen te stellen waarmee onze resultaten correct in de browser kunnen worden weergegeven.
Stap 3) In deze stap gaan we onze output naar de webpagina sturen en onze applicatie laten luisteren op een bepaalde poort.
Code Verklaring:
- Hier sturen we de volledige inhoud die in de vorige stap is gemaakt naar onze webpagina. Met de parameter 'res' kunnen we als reactie inhoud naar onze webpagina sturen.
- We laten onze hele Node.js-applicatie luisteren op poort 3000.
Uitgang:
Van de output,
- Hieruit blijkt duidelijk dat alle employeeid's in de Employee collection zijn opgehaald. Dit komt omdat we de MongoDB-driver gebruiken om verbinding te maken met de database en alle werknemersrecords op te halen en vervolgens "express" hebben gebruikt om de records weer te geven.
Hier is de code voor uw 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 JSDeprecatedSymbolscursor.each(function(err, item) {if (item != null) {str = str + " Employee id " + item.Employeeid + "";}});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-stuurprogramma. 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 die forEach gebruikt
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 + "";}}, function(err) {res.send(err);db.close();});});});var server = app.listen(8080, function() {});
Overzicht
- 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 voor het werken met MongoDB-databases is een module met de naam 'MongoDB'. Deze module wordt geïnstalleerd via de Node-pakketbeheerder.
- Met de MongoDB-module is het mogelijk om records in een verzameling op te vragen en de normale update-, verwijder- en invoegbewerkingen uit te voeren.
- Ten slotte is een van de moderne methoden om het express-framework samen met MongoDB te gebruiken om moderne applicaties te leveren. Het Express-framework kan gebruik maken van de gegevens die door het MongoDB-stuurprogramma worden geretourneerd en de gegevens dienovereenkomstig aan de gebruiker op de webpagina weergeven.