För det mesta har alla moderna webbapplikationer ett slags datalagringssystem i backend. Om du till exempel tar hänsyn till en webbshoppingsapplikation lagras data som priset på en artikel i databasen.
Node js-ramverket kan fungera med databaser med både relationella (som Oracle och MS SQL Server) och icke-relationsdatabaser (som MongoDB). I denna handledning kommer vi att se hur vi kan använda databaser från Node js-applikationer.
I den här handledningen lär du dig-
- Node.js och NoSQL-databaser
- Använda MongoDB och Node.js
- Hur man bygger en nodexpress-app med MongoDB för att lagra och servera innehåll
Node.js och NoSQL-databaser
Under årens lopp har NoSQL-databaser som MongoDB och MySQL blivit ganska populära som databaser för lagring av data. Förmågan hos dessa databaser att lagra alla typer av innehåll och särskilt i alla typer av format är det som gör dessa databaser så kända.
Node.js har förmågan att arbeta med både MySQL och MongoDB som databaser. För att kunna använda någon av dessa databaser måste du ladda ner och använda de moduler som krävs med Node-pakethanteraren.
För MySQL kallas den erforderliga modulen "mysql" och för att använda MongoDB är den nödvändiga modulen som ska installeras "Mongoose."
Med dessa moduler kan du utföra följande åtgärder i Node.js
- Hantera anslutningspooling - Här kan du ange antalet MySQL-databasanslutningar som ska underhållas och sparas av Node.js.
- Skapa och stäng en anslutning till en databas. I båda fallen kan du tillhandahålla en återuppringningsfunktion som kan anropas när anslutningsmetoderna "skapa" och "stäng" körs.
- Frågor kan köras för att hämta data från respektive databaser för att hämta data.
- Datamanipulation, som att infoga data, radera och uppdatera data kan också uppnås med dessa moduler.
För de återstående ämnena kommer vi att titta på hur vi kan arbeta med MongoDB-databaser inom Node.js.
Använda MongoDB och Node.js
Som diskuterats i det tidigare ämnet är MongoDB en av de mest populära databaserna som används tillsammans med Node.js.
Under det här kapitlet får vi se
Hur vi kan skapa anslutningar med en MongoDB-databas
Hur vi kan utföra de normala operationerna för att läsa data från en databas samt infoga, ta bort och uppdatera poster i en MongoDB-databas.
För detta kapitel, låt oss anta att vi har nedanstående MongoDB-data på plats.
Databasnamn: EmployeeDB
Samlingsnamn: Anställd
Documents{{Employeeid : 1, Employee Name : Guru99},{Employeeid : 2, Employee Name : Joe},{Employeeid : 3, Employee Name : Martin},}
- Installera NPM-modulerna
Du behöver en drivrutin för att komma åt Mongo från en Node-applikation. Det finns ett antal Mongo-drivrutiner tillgängliga, men MongoDB är bland de mest populära. För att installera MongoDB-modulen kör du kommandot nedan
npm installera mongodb
- Skapa och stänga en anslutning till en MongoDB-databas. Nedanstående kodavsnitt visar hur man skapar och stänger en anslutning till en MongoDB-databas.
Kodförklaring:
- Det första steget är att inkludera mongoose-modulen, som görs genom funktionen kräver. När den här modulen är på plats kan vi använda de funktioner som är tillgängliga i den här modulen för att skapa anslutningar till databasen.
- Därefter specificerar vi vår anslutningssträng till databasen. I anslutningssträngen finns det tre nyckelvärden som skickas.
- Den första är 'mongodb' som anger att vi ansluter till en mongoDB-databas.
- Nästa är 'localhost' vilket innebär att vi ansluter till en databas på den lokala maskinen.
- Nästa är 'EmployeeDB' som är namnet på databasen som definierats i vår MongoDB-databas.
- Nästa steg är att faktiskt ansluta till vår databas. Anslutningsfunktionen tar in vår URL och har möjlighet att ange en återuppringningsfunktion. Det anropas när anslutningen öppnas till databasen. Detta ger oss möjlighet att veta om databasanslutningen lyckades eller inte.
- I funktionen skriver vi strängen "Anslutning upprättad" till konsolen för att indikera att en lyckad anslutning skapades.
- Slutligen stänger vi anslutningen med uttalandet db.close.
Om koden ovan körs ordentligt kommer strängen "Connected" att skrivas till konsolen enligt nedan.
- Fråga efter data i en MongoDB-databas - Med hjälp av MongoDB-drivrutinen kan vi också hämta data från MongoDB-databasen.
Nedanstående avsnitt visar hur vi kan använda drivrutinen för att hämta alla dokument från vår medarbetarsamling i vår EmployeeDB-databas. Detta är samlingen i vår MongoDB-databas, som innehåller alla anställdsrelaterade dokument. Varje dokument har ett objekt-id, anställds namn och medarbetar-id för att definiera dokumentets värden.
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);});});
Kodförklaring:
-
I det första steget skapar vi en markör (En markör är en pekare som används för att peka på de olika poster som hämtats från en databas. Markören används sedan för att itera igenom de olika posterna i databasen. Här definierar vi en variabelnamn kallad markör som kommer att användas för att lagra pekaren till de poster som hämtas från databasen.) som pekar på de poster som hämtas från MongoDb-samlingen. Vi har också möjlighet att specificera samlingen '' Anställd '' från vilken vi kan hämta posterna. Funktionen find () används för att specificera att vi vill hämta alla dokument från MongoDB-samlingen.
-
Vi itererar nu genom vår markör och för varje dokument i markören ska vi utföra en funktion.
-
Vår funktion är helt enkelt att skriva ut innehållet i varje dokument till konsolen.
Obs: - Det är också möjligt att hämta en viss post från en databas. Detta kan göras genom att ange sökvillkoren i funktionen find (). Antag till exempel att om du bara ville hämta posten som har anställds namn som Guru99, kan detta uttalande skrivas enligt följande
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
Om koden ovan körs framgångsrikt visas följande utdata i din konsol.
Produktion:
Från produktionen,
- Du kommer att kunna tydligt se att alla dokument från samlingen hämtas. Detta är möjligt genom att använda find () -metoden för mongoDB-anslutningen (db) och itera genom alla dokument med hjälp av markören.
- Infoga dokument i en samling - Dokument kan infogas i en samling med metoden insertOne som tillhandahålls av MongoDB-biblioteket. Nedanstående kodavsnitt visar hur vi kan infoga ett dokument i en mongoDB-samling.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').insertOne({Employeeid: 4,EmployeeName: "NewEmployee"});});
Kodförklaring:
- Här använder vi metoden insertOne från MongoDB-biblioteket för att infoga ett dokument i medarbetarsamlingen.
- Vi specificerar dokumentuppgifterna om vad som behöver införas i medarbetarsamlingen.
Om du nu kontrollerar innehållet i din MongoDB-databas hittar du posten med Employeeid på 4 och EmployeeName för "NewEmployee" infogad i Employee-samlingen.
Obs! Konsolen visar ingen utdata eftersom posten sätts in i databasen och ingen utdata kan visas här.
För att kontrollera att data har införts ordentligt i databasen måste du utföra följande kommandon i MongoDB
- Använd EmployeeDB
- db.Employee.find ({Employeeid: 4})
Det första uttalandet säkerställer att du är ansluten till databasen EmployeeDb. Det andra uttalandet söker efter posten som har anställd id på 4.
- Uppdatera dokument i en samling - Dokument kan uppdateras i en samling med metoden updateOne som tillhandahålls av MongoDB-biblioteket. Nedanstående kodavsnitt visar hur du uppdaterar ett dokument i en mongoDB-samling.
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"}});});
Kodförklaring:
- Här använder vi metoden "updateOne" från MongoDB-biblioteket, som används för att uppdatera ett dokument i en mongoDB-samling.
- Vi specificerar sökkriterierna för vilket dokument som behöver uppdateras. I vårt fall vill vi hitta dokumentet som har anställningsnamnet "Ny anställd."
- Vi vill sedan ställa in värdet på EmployeeName för dokumentet från "NewEmployee" till "Mohan".
Om du nu kontrollerar innehållet i din MongoDB-databas hittar du posten med Employeeid of 4 och EmployeeName för "Mohan" uppdaterad i Employee collection.
För att kontrollera att data har uppdaterats ordentligt i databasen måste du utföra följande kommandon i MongoDB
- Använd EmployeeDB
- db.Employee.find ({Employeeid: 4})
Det första uttalandet säkerställer att du är ansluten till databasen EmployeeDb. Det andra uttalandet söker efter posten som har anställd id på 4.
- Ta bort dokument i en samling - Dokument kan raderas i en samling med "deleteOne" -metoden från MongoDB-biblioteket. Nedanstående kodavsnitt visar hur man tar bort ett dokument i en mongoDB-samling.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').deleteOne({"EmployeeName": "Mohan"});});
Kodförklaring:
- Här använder vi metoden "deleteOne" från MongoDB-biblioteket, som används för att radera ett dokument i en mongoDB-samling.
- Vi specificerar sökkriterierna för vilket dokument som måste raderas. I vårt fall vill vi hitta dokumentet som har anställningsnamnet "Mohan" och ta bort detta dokument.
Om du nu kontrollerar innehållet i din MongoDB-databas hittar du posten med Employeeid of 4 och EmployeeName av "Mohan" borttagen från Employee-samlingen.
För att kontrollera att data har uppdaterats ordentligt i databasen måste du utföra följande kommandon i MongoDB
- Använd EmployeeDB
- db.Employee.find ()
Det första uttalandet säkerställer att du är ansluten till databasen EmployeeDb. Det andra uttalandet söker och visar alla poster i medarbetarsamlingen. Här kan du se om posten har raderats eller inte.
Hur man bygger en nodexpress-app med MongoDB för att lagra och servera innehåll
Att bygga en applikation med en kombination av både användning av express och MongoDB är ganska vanligt nuförtiden.
När du arbetar med JavaScript-webbaserade applikationer kommer man normalt här med termen MEAN stack.
- Termen MEAN stack avser en samling JavaScript-baserade tekniker som används för att utveckla webbapplikationer.
- MEAN är en förkortning för MongoDB, ExpressJS, AngularJS och Node.js.
Därför är det alltid bra att förstå hur Node.js och MongoDB arbetar tillsammans för att leverera applikationer som interagerar med backend-databaser.
Låt oss titta på ett enkelt exempel på hur vi kan använda "express" och "MongoDB" tillsammans. Vårt exempel kommer att använda samma anställdssamling i MongoDB EmployeeDB-databasen.
Vi kommer nu att använda Express för att visa data på vår webbsida när det begärs av användaren. När vår applikation körs på Node.js kan man behöva bläddra till URL: en: http: // localhost: 3000 / Employeeid .
När sidan startas visas hela medarbetar-id i medarbetarsamlingen. Så låt oss se kodavsnittet i avsnitt som gör att vi kan uppnå detta.
Steg 1) Definiera alla bibliotek som behöver användas i vår applikation, som i vårt fall är både MongoDB och expressbiblioteket.
Kodförklaring:
- Vi definierar vårt "express" -bibliotek, som kommer att användas i vår applikation.
- Vi definierar vårt "express" -bibliotek, som kommer att användas i vår applikation för att ansluta till vår MongoDB-databas.
- Här definierar vi webbadressen till vår databas att ansluta till.
- Slutligen definierar vi en sträng som kommer att användas för att lagra vår samling medarbetar-id som måste visas i webbläsaren senare.
Steg 2) I det här steget kommer vi nu att få alla poster i vår 'Anställd'-samling och arbeta med dem därefter.
Kodförklaring:
- Vi skapar en väg till vår applikation som heter 'Employeeid'. Så när någon surfar till http: // localhost: 3000 / Anställd för vår applikation kommer kodavsnittet som definierats för den här rutten att köras.
- Här får vi alla poster i vår 'Anställd'-samling genom db.collection (' Anställd '). Find () kommando. Vi tilldelar sedan denna samling till en variabel som kallas markören. Med den här markörvariabeln kan vi bläddra igenom alla poster i samlingen.
- Vi använder nu funktionen cursor.each () för att navigera genom alla poster i vår samling. För varje post ska vi definiera ett kodavsnitt om vad vi ska göra när varje post nås.
- Slutligen ser vi att om den returnerade posten inte är null tar vi medarbetaren via kommandot "item.Employeeid". Resten av koden är bara att konstruera en korrekt HTML-kod som gör att våra resultat kan visas korrekt i webbläsaren.
Steg 3) I det här steget ska vi skicka vår produktion till webbsidan och låta vår applikation lyssna på en viss port.
Kodförklaring:
- Här skickar vi hela innehållet som konstruerades i det tidigare steget till vår webbsida. Parametern 'res' låter oss skicka innehåll till vår webbsida som svar.
- Vi gör hela vår Node.js-applikation lyssnande på port 3000.
Produktion:
Från produktionen,
- Det visar tydligt att alla anställda-id-er i medarbetarsamlingen hämtades. Detta beror på att vi använder MongoDB-drivrutinen för att ansluta till databasen och hämta alla medarbetarposter och därefter använda "express" för att visa posterna.
Här är koden för din referens
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() {});
Obs! Cursor.each kanske är utgången baserat på versionen av din MongoDB-drivrutin. Du kan lägga till // noinspection JSDeprecatedSymbols före cursor.each för att kringgå problemet. Alternativt kan du använda forEach. Nedan är exempelkoden som använder 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 + "";}}, function(err) {res.send(err);db.close();});});});var server = app.listen(8080, function() {});
Sammanfattning
- Node.js används tillsammans med NoSQL-databaser för att bygga många moderna webbapplikationer. Några av de vanliga databaserna som används är MySQL och MongoDB.
- En av de vanliga modulerna som används för att arbeta med MongoDB-databaser är en modul som heter 'MongoDB.' Denna modul installeras via Node-pakethanteraren.
- Med MongoDB-modulen är det möjligt att fråga efter poster i en samling och utföra den vanliga uppdateringen, ta bort och infoga åtgärder.
- Slutligen är en av de moderna metoderna att använda expressramen tillsammans med MongoDB för att leverera moderna applikationer. Express-ramverket kan använda de data som returneras av MongoDB-drivrutinen och visa informationen för användaren på webbsidan i enlighet därmed.