For det meste har alle moderne webapplikasjoner et slags datalagringssystem i backend. For eksempel, hvis du tar saken til en netthandelsapplikasjon, vil data som prisen på en vare bli lagret i databasen.
Node js-rammeverket kan fungere med databaser med både relasjonelle (som Oracle og MS SQL Server) og ikke-relasjonelle databaser (som MongoDB). I denne opplæringen vil vi se hvordan vi kan bruke databaser fra Node js-applikasjoner.
I denne veiledningen vil du lære-
- Node.js og NoSQL-databaser
- Ved hjelp av MongoDB og Node.js
- Hvordan lage en node-ekspress-app med MongoDB for å lagre og servere innhold
Node.js og NoSQL-databaser
Gjennom årene har NoSQL-database som MongoDB og MySQL blitt ganske populær som databaser for lagring av data. Evnen til disse databasene til å lagre hvilken som helst type innhold, og spesielt i alle typer format, er det som gjør disse databasene så berømte.
Node.js har muligheten til å jobbe med både MySQL og MongoDB som databaser. For å kunne bruke en av disse databasene, må du laste ned og bruke de nødvendige modulene ved hjelp av Node-pakkebehandling.
For MySQL kalles den nødvendige modulen "mysql" og for bruk av MongoDB er den nødvendige modulen som skal installeres "Mongoose."
Med disse modulene kan du utføre følgende operasjoner i Node.js
- Administrer tilkoblingssamlingen - Her kan du angi antall MySQL-databaseforbindelser som skal vedlikeholdes og lagres av Node.js.
- Opprett og lukk en forbindelse til en database. I begge tilfeller kan du tilby en tilbakeringingsfunksjon som kan kalles når "opprett" og "lukk" tilkoblingsmetodene blir utført.
- Spørringer kan utføres for å få data fra respektive databaser for å hente data.
- Datamanipulering, for eksempel å sette inn data, slette og oppdatere data, kan også oppnås med disse modulene.
For de gjenværende emnene vil vi se på hvordan vi kan jobbe med MongoDB-databaser i Node.js.
Ved hjelp av MongoDB og Node.js
Som diskutert i det tidligere emnet, er MongoDB en av de mest populære databasene som brukes sammen med Node.js.
I løpet av dette kapitlet får vi se
Hvordan vi kan opprette forbindelser med en MongoDB-database
Hvordan vi kan utføre de normale operasjonene for å lese data fra en database, samt sette inn, slette og oppdatere poster i en MongoDB-database.
For formålet med dette kapittelet, la oss anta at vi har nedenstående MongoDB-data på plass.
Database navn: EmployeeDB
Samlingsnavn: Ansatt
Documents{{Employeeid : 1, Employee Name : Guru99},{Employeeid : 2, Employee Name : Joe},{Employeeid : 3, Employee Name : Martin},}
- Installere NPM-modulene
Du trenger en driver for å få tilgang til Mongo fra et Node-program. Det er en rekke Mongo-drivere tilgjengelig, men MongoDB er blant de mest populære. For å installere MongoDB-modulen, kjør kommandoen nedenfor
npm installer mongodb
- Opprette og lukke en forbindelse til en MongoDB-database. Kodebiten nedenfor viser hvordan du oppretter og lukker en forbindelse til en MongoDB-database.
Kode Forklaring:
- Det første trinnet er å inkludere Mongoose-modulen, som gjøres gjennom funksjonen krever. Når denne modulen er på plass, kan vi bruke de nødvendige funksjonene som er tilgjengelige i denne modulen for å opprette forbindelser til databasen.
- Deretter spesifiserer vi forbindelsesstrengen vår til databasen. I tilkoblingsstrengen er det tre nøkkelverdier som sendes.
- Den første er 'mongodb' som spesifiserer at vi kobler til en mongoDB-database.
- Den neste er 'localhost', noe som betyr at vi kobler til en database på den lokale maskinen.
- Den neste er 'EmployeeDB' som er navnet på databasen definert i MongoDB-databasen vår.
- Det neste trinnet er å koble til databasen vår. Tilkoblingsfunksjonen tar inn vår URL og har muligheten til å spesifisere en tilbakeringingsfunksjon. Det blir ringt når forbindelsen åpnes til databasen. Dette gir oss muligheten til å vite om databaseforbindelsen var vellykket eller ikke.
- I funksjonen skriver vi strengen "Connection etablert" til konsollen for å indikere at en vellykket forbindelse ble opprettet.
- Til slutt lukker vi forbindelsen ved hjelp av uttalelsen db.close.
Hvis koden ovenfor kjøres riktig, vil strengen "Connected" bli skrevet til konsollen som vist nedenfor.
- Spørring etter data i en MongoDB-database - Ved hjelp av MongoDB-driveren kan vi også hente data fra MongoDB-databasen.
Avsnittet nedenfor viser hvordan vi kan bruke driveren til å hente alle dokumentene fra vår ansattesamling i vår EmployeeDB-database. Dette er samlingen i MongoDB-databasen vår, som inneholder alle de ansatterelaterte dokumentene. Hvert dokument har en objekt-ID, ansattes navn og ansatt-ID for å definere verdiene til dokumentet.
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);});});
Kode Forklaring:
-
I det første trinnet lager vi en markør (En markør er en peker som brukes til å peke på de forskjellige postene som er hentet fra en database. Markøren brukes deretter til å gjenta gjennom de forskjellige postene i databasen. Her definerer vi en variabelnavn kalt markør som vil brukes til å lagre pekeren til postene hentet fra databasen.) som peker på postene som hentes fra MongoDb-samlingen. Vi har også muligheten til å spesifisere samlingen 'Medarbeider' som du skal hente postene fra. Funksjonen find () brukes til å spesifisere at vi vil hente alle dokumentene fra MongoDB-samlingen.
-
Vi itererer nå gjennom markøren vår, og for hvert dokument i markøren skal vi utføre en funksjon.
-
Vår funksjon er å bare skrive ut innholdet i hvert dokument til konsollen.
Merk: - Det er også mulig å hente en bestemt post fra en database. Dette kan gjøres ved å spesifisere søketilstanden i find () -funksjonen. Anta for eksempel at hvis du bare ønsket å hente posten som har ansattes navn som Guru99, kan denne uttalelsen skrives som følger
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
Hvis koden ovenfor blir utført vellykket, vil følgende utdata vises i konsollen din.
Produksjon:
Fra utgangen,
- Du vil kunne se tydelig at alle dokumentene fra samlingen blir hentet. Dette er mulig ved å bruke find () -metoden til mongoDB-tilkoblingen (db) og gjenta gjennom alle dokumentene ved hjelp av markøren.
- Sette inn dokumenter i en samling - Dokumenter kan settes inn i en samling ved hjelp av insertOne-metoden som tilbys av MongoDB-biblioteket. Kodebiten nedenfor viser hvordan vi kan sette inn et 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"});});
Kode Forklaring:
- Her bruker vi insertOne-metoden fra MongoDB-biblioteket for å sette inn et dokument i ansattesamlingen.
- Vi spesifiserer dokumentdetaljene for hva som må settes inn i ansattesamlingen.
Hvis du nå sjekker innholdet i MongoDB-databasen din, vil du finne posten med Employeeid på 4 og EmployeeName for "NewEmployee" satt inn i Employee-samlingen.
Merk: Konsollen viser ingen utdata fordi posten blir satt inn i databasen og ingen utdata kan vises her.
For å kontrollere at dataene er riktig satt inn i databasen, må du utføre følgende kommandoer i MongoDB
- Bruk EmployeeDB
- db.Employee.find ({Employeeid: 4})
Den første uttalelsen sikrer at du er koblet til EmployeeDb-databasen. Den andre uttalelsen søker etter posten som har ansattes ID på 4.
- Oppdatere dokumenter i en samling - Dokumenter kan oppdateres i en samling ved hjelp av updateOne-metoden som tilbys av MongoDB-biblioteket. Kodebiten nedenfor viser hvordan du oppdaterer et 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"}});});
Kode Forklaring:
- Her bruker vi "updateOne" -metoden fra MongoDB-biblioteket, som brukes til å oppdatere et dokument i en mongoDB-samling.
- Vi spesifiserer søkekriteriene for hvilket dokument som må oppdateres. I vårt tilfelle ønsker vi å finne dokumentet som har medarbeidernavnet "Ny medarbeider."
- Vi vil deretter sette verdien av EmployeeName for dokumentet fra "NewEmployee" til "Mohan".
Hvis du nå sjekker innholdet i MongoDB-databasen din, vil du finne posten med Employeeid of 4 og EmployeeName of "Mohan" oppdatert i Employee-samlingen.
For å kontrollere at dataene er oppdatert riktig i databasen, må du utføre følgende kommandoer i MongoDB
- Bruk EmployeeDB
- db.Employee.find ({Employeeid: 4})
Den første uttalelsen sikrer at du er koblet til EmployeeDb-databasen. Den andre uttalelsen søker etter posten som har ansattes ID på 4.
- Slette dokumenter i en samling - Dokumenter kan slettes i en samling ved å bruke "deleteOne" -metoden fra MongoDB-biblioteket. Kodebiten nedenfor viser hvordan du sletter et 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"});});
Kode Forklaring:
- Her bruker vi "deleteOne" -metoden fra MongoDB-biblioteket, som brukes til å slette et dokument i en mongoDB-samling.
- Vi spesifiserer søkekriteriene for hvilket dokument som må slettes. I vårt tilfelle ønsker vi å finne dokumentet som har EmployeeName av "Mohan" og slette dette dokumentet.
Hvis du nå sjekker innholdet i MongoDB-databasen din, vil du finne posten med Employeeid of 4 og EmployeeName for "Mohan" slettet fra Employee-samlingen.
For å kontrollere at dataene er oppdatert riktig i databasen, må du utføre følgende kommandoer i MongoDB
- Bruk EmployeeDB
- db.Employee.find ()
Den første uttalelsen sikrer at du er koblet til EmployeeDb-databasen. Den andre erklæringen søker og viser alle postene i ansattesamlingen. Her kan du se om posten er slettet eller ikke.
Hvordan lage en node-ekspress-app med MongoDB for å lagre og servere innhold
Å bygge en applikasjon med en kombinasjon av både bruk av express og MongoDB er ganske vanlig i dag.
Når du arbeider med JavaScript nettbaserte applikasjoner, vil man normalt her bruke begrepet MEAN stack.
- Uttrykket MEAN stack refererer til en samling JavaScript-baserte teknologier som brukes til å utvikle webapplikasjoner.
- MEAN er et akronym for MongoDB, ExpressJS, AngularJS og Node.js.
Derfor er det alltid godt å forstå hvordan Node.js og MongoDB samarbeider for å levere applikasjoner som samhandler med backend-databaser.
La oss se på et enkelt eksempel på hvordan vi kan bruke "express" og "MongoDB" sammen. Eksemplet vårt vil bruke den samme ansattesamlingen i MongoDB EmployeeDB-databasen.
Vi vil nå innlemme Express for å vise dataene på nettsiden vår når brukeren ber om det. Når applikasjonen vår kjører på Node.js, kan det hende at du må bla til URL-adressen http: // localhost: 3000 / Employeeid .
Når siden er lansert, vises hele ansatt-ID-en i ansattesamlingen. Så la oss se kodebiten i seksjoner som lar oss oppnå dette.
Trinn 1) Definer alle bibliotekene som må brukes i applikasjonen vår, som i vårt tilfelle er både MongoDB og ekspressbiblioteket.
Kode Forklaring:
- Vi definerer vårt "ekspressbibliotek", som skal brukes i applikasjonen vår.
- Vi definerer vårt "ekspressbibliotek", som skal brukes i applikasjonen vår for å koble til MongoDB-databasen vår.
- Her definerer vi URL-en til databasen vår for å koble til.
- Til slutt definerer vi en streng som skal brukes til å lagre samlingen vår av medarbeider-ID som må vises i nettleseren senere.
Trinn 2) I dette trinnet skal vi nå få alle postene i vår 'Ansattesamling' og jobbe med dem deretter.
Kode Forklaring:
- Vi lager en rute til søknaden vår kalt 'Employeeid'. Så når noen surfer til http: // localhost: 3000 / Employeeid av applikasjonen vår, blir kodebiten som er definert for denne ruten, utført.
- Her får vi alle postene i 'Medarbeidersamlingen' gjennom db.collection ('Ansatt'). Find () -kommandoen. Vi tilordner deretter denne samlingen til en variabel som kalles markør. Ved å bruke denne markørvariabelen vil vi kunne bla gjennom alle postene i samlingen.
- Vi bruker nå cursor.each () -funksjonen til å navigere gjennom alle postene i samlingen vår. For hver post skal vi definere et kodebit på hva du skal gjøre når hver post er tilgjengelig.
- Til slutt ser vi at hvis posten som returneres ikke er null, tar vi den ansatte via kommandoen "item.Employeeid". Resten av koden er bare å konstruere en riktig HTML-kode som gjør at resultatene våre kan vises riktig i nettleseren.
Trinn 3) I dette trinnet skal vi sende utdataene våre til websiden og få applikasjonen til å lytte på en bestemt port.
Kode Forklaring:
- Her sender vi hele innholdet som ble konstruert i det tidligere trinnet til vår webside. Parameteren 'res' lar oss sende innhold til nettsiden vår som svar.
- Vi får hele Node.js-applikasjonen til å lytte på port 3000.
Produksjon:
Fra utgangen,
- Det viser tydelig at alle ansatteidene i ansattesamlingen ble hentet. Dette er fordi vi bruker MongoDB-driveren til å koble til databasen og hente alle medarbeideroppføringene og deretter brukte "express" for å vise postene.
Her er koden som referanse
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() {});
Merk: cursor.each kan være utfaset basert på versjon av MongoDB-driveren. Du kan legge til // noinspection JSDeprecatedSymbols før cursor.each for å omgå problemet. Alternativt kan du bruke forEach. Nedenfor er eksempelkoden som bruker 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() {});
Sammendrag
- Node.js brukes sammen med NoSQL-databaser for å bygge mange moderne applikasjoner. Noen av de vanlige databasene som brukes er MySQL og MongoDB.
- En av de vanlige modulene som brukes til å jobbe med MongoDB-databaser, er en modul som heter 'MongoDB.' Denne modulen installeres via Node-pakkebehandling.
- Med MongoDB-modulen er det mulig å spørre etter poster i en samling og utføre normal oppdatering, sletting og innsetting.
- Til slutt er en av de moderne metodene å bruke uttrykkelig rammeverk sammen med MongoDB for å levere moderne applikasjoner. Express-rammeverket kan benytte seg av dataene som returneres av MongoDB-driveren, og vise dataene til brukeren på websiden deretter.