node.js MongoDB Opplæring med eksempler
Stort sett alle moderne nettapplikasjoner har et slags datalagringssystem i bakenden. Hvis du for eksempel tar et netthandelsprogram, vil data som prisen på en vare bli lagret i databasen.
Node js-rammeverket kan fungere med databaser med både relasjonelle (som f.eks Oracle og MS SQL Server) og ikke-relasjonelle databaser (som f.eks MongoDB). I denne opplæringen vil vi se hvordan vi kan bruke databaser fra Node js-applikasjoner.
Node.js og NoSQL-databaser
Gjennom årene har NoSQL-database som f.eks MongoDB og for MySQL har blitt ganske populære som databaser for lagring av data. Evnen til disse databasene til å lagre alle typer innhold og spesielt i alle typer formater er det som gjør disse databasene så berømte.
Node.js har muligheten til å jobbe med begge MySQL og MongoDB som databaser. For å bruke en av disse databasene, må du laste ned og bruke de nødvendige modulene ved å bruke Node-pakkebehandlingen.
Til MySQL, den nødvendige modulen kalles "mysql" og for bruk MongoDB den nødvendige modulen som skal installeres er "Mongoose."
Med disse modulene kan du utføre følgende operasjoner i Node.js
- Administrer tilkoblingspoolingen – Her kan du spesifisere antall MySQL databaseforbindelser som bør vedlikeholdes og lagres av Node.js.
- Opprett og lukk en tilkobling til en database. I begge tilfeller kan du tilby en tilbakeringingsfunksjon som kan kalles når "opprett" og "lukk" tilkoblingsmetodene utføres.
- Spørringer kan utføres for å hente data fra respektive databaser for å hente data.
- Datamanipulering, som å sette inn data, slette og oppdatere data kan også oppnås med disse modulene.
For de resterende temaene skal vi se på hvordan vi kan jobbe med MongoDB databaser innenfor node.js.
Ved hjelp av MongoDB og Node.js
Som diskutert i det tidligere emnet, MongoDB er en av de mest populære databasene som brukes sammen med Node.js.
I løpet av dette kapittelet vil vi se
Hvordan vi kan etablere forbindelser med en MongoDB database
Hvordan vi kan utføre de normale operasjonene med å 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 følgende MongoDB data på plass.
Databasenavn: 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 sjåfør for å få tilgang til Mongo fra en Node-applikasjon. Det er en rekke Mongo-drivere tilgjengelig, men MongoDB er blant de mest populære. For å installere MongoDB modul, 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 tilkobling til en MongoDB database.
Kodeforklaring:
- Det første trinnet er å inkludere mongoose-modulen, som gjøres gjennom require-funksjonen. Når denne modulen er på plass, kan vi bruke de nødvendige funksjonene som er tilgjengelige i denne modulen for å opprette koblinger til databasen.
- Deretter spesifiserer vi tilkoblingsstrengen vår til databasen. I koblingsstrengen er det 3 nøkkelverdier som sendes.
- Den første er 'mongodb' som spesifiserer at vi kobler til en mongoDB-database.
- Den neste er 'localhost' som betyr at vi kobler til en database på den lokale maskinen.
- Den neste er 'EmployeeDB' som er navnet på databasen definert i vår MongoDB database.
- Det neste trinnet er å faktisk koble til databasen vår. Koblefunksjonen tar inn vår URL og har mulighet til å spesifisere en tilbakeringingsfunksjon. Den vil bli kalt når tilkoblingen åpnes til databasen. Dette gir oss muligheten til å vite om databasetilkoblingen var vellykket eller ikke.
- I funksjonen skriver vi strengen "Forbindelse etablert" til konsollen for å indikere at en vellykket tilkobling ble opprettet.
- Til slutt avslutter vi forbindelsen ved å bruke db.close-setningen.
Hvis koden ovenfor utføres riktig, vil strengen "Connected" bli skrevet til konsollen som vist nedenfor.
- Spørre etter data i en MongoDB database - Bruker MongoDB driver kan vi også hente data fra MongoDB database. Avsnittet nedenfor viser hvordan vi kan bruke driveren til å hente alle dokumentene fra vår medarbeidersamling i vår EmployeeDB-database. Dette er samlingen i vår MongoDB database, som inneholder alle medarbeiderrelaterte dokumenter. Hvert dokument har en objekt-ID, medarbeidernavn 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); }); });
Kodeforklaring:
- I det første trinnet lager vi en markør (En markør er en peker som brukes til å peke på de ulike postene hentet fra en database. Markøren brukes så til å iterere gjennom de forskjellige postene i databasen. Her definerer vi en variabelnavn kalt markør som vil bli brukt til å lagre pekeren til postene hentet fra databasen ) som peker til postene som er hentet fra MongoDb-samlingen. Vi har også mulighet til å spesifisere samlingen 'Ansatt' som vi skal hente postene fra. Finn()-funksjonen brukes til å spesifisere at vi ønsker å hente alle dokumentene fra MongoDB samling.
- 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 ganske enkelt å 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økebetingelsen i funn()-funksjonen. Anta for eksempel at hvis du bare ønsket å hente posten som har ansattnavnet som Guru99, så kan denne uttalelsen skrives som følger
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
Hvis koden ovenfor utføres vellykket, vil følgende utgang vises i konsollen din.
Utgang:
Fra utgangen,
- Du vil tydelig kunne se at alle dokumentene fra samlingen er hentet. Dette er mulig ved å bruke find()-metoden til mongoDB-tilkoblingen (db) og iterere gjennom alle dokumentene ved å bruke markøren.
- Sette inn dokumenter i en samling – Dokumenter kan settes inn i en samling ved å bruke insertOne-metoden levert av MongoDB bibliotek. 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" }); });
Kodeforklaring:
- Her bruker vi insertOne-metoden fra MongoDB biblioteket for å sette inn et dokument i ansattsamlingen.
- Vi spesifiserer dokumentdetaljene for hva som må settes inn i ansattsamlingen.
Hvis du nå sjekker innholdet i din MongoDB databasen, vil du finne posten med Employee-ID på 4 og EmployeeName på "NewEmployee" satt inn i Employee-samlingen.
OBS: Konsollen vil ikke vise noe utdata fordi posten blir satt inn i databasen og ingen utdata kan vises her.
For å kontrollere at dataene er satt inn riktig i databasen, må du utføre følgende kommandoer i MongoDB
- Bruk EmployeeDB
- db.Employee.find({Employeeid :4 })
Den første setningen sikrer at du er koblet til EmployeeDb-databasen. Den andre setningen søker etter posten som har ansatt-ID-en 4.
- Oppdatering av dokumenter i en samling – Dokumenter kan oppdateres i en samling ved å bruke updateOne-metoden levert av MongoDB bibliotek. 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" } }); });
Kodeforklaring:
- Her bruker vi "updateOne" -metoden fra MongoDB bibliotek, som brukes til å oppdatere et dokument i en mongoDB-samling.
- Vi spesifiserer søkekriteriene for hvilket dokument som skal oppdateres. I vårt tilfelle ønsker vi å finne dokumentet som har EmployeeName som "NewEmployee."
- Vi ønsker da å sette verdien av EmployeeName for dokumentet fra "NewEmployee" til "Mohan".
Hvis du nå sjekker innholdet i din MongoDB database, vil du finne posten med Employeeid of 4 og EmployeeName of "Mohan" oppdatert i Employee-samlingen.
For å kontrollere at dataene er riktig oppdatert i databasen, må du utføre følgende kommandoer i MongoDB
- Bruk EmployeeDB
- db.Employee.find({Employeeid :4 })
Den første setningen sikrer at du er koblet til EmployeeDb-databasen. Den andre setningen søker etter posten som har ansatt-ID-en 4.
- Sletting av dokumenter i en samling – Dokumenter kan slettes i en samling ved å bruke "deleteOne"-metoden levert av MongoDB bibliotek. 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" } ); });
Kodeforklaring:
- Her bruker vi "deleteOne" -metoden fra MongoDB bibliotek, som brukes til å slette et dokument i en mongoDB-samling.
- Vi spesifiserer søkekriteriene for hvilket dokument som skal slettes. I vårt tilfelle ønsker vi å finne dokumentet som har ansattnavnet "Mohan" og slette dette dokumentet.
Hvis du nå sjekker innholdet i din MongoDB databasen, vil du finne posten med Employeeid of 4 og EmployeeName of "Mohan" slettet fra Employee-samlingen.
For å kontrollere at dataene er riktig oppdatert i databasen, må du utføre følgende kommandoer i MongoDB
- Bruk EmployeeDB
- db.Employee.find()
Den første setningen sikrer at du er koblet til EmployeeDb-databasen. Den andre setningen søker og viser alle postene i ansattsamlingen. Her kan du se om posten er slettet eller ikke.
Hvordan bygge en node express-app med MongoDB å lagre og servere innhold
Bygge en applikasjon med en kombinasjon av både bruk av ekspress og MongoDB er ganske vanlig i dag.
Når du arbeider med JavaScript nettbaserte applikasjoner vil man normalt her av begrepet MEAN stack.
- Begrepet MEAN stack refererer til en samling av JavaSkriptbaserte 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 samarbeide for å levere applikasjoner som samhandler med backend-databaser.
La oss se på et enkelt eksempel på hvordan vi kan bruke "express" og "MongoDB"sammen. Vårt eksempel vil gjøre bruk av den samme ansattsamlingen i MongoDB EmployeeDB database.
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, må man kanskje bla til URL-en http://localhost:3000/Employeeid.
Når siden er lansert, vil all medarbeider-ID i Ansatt-samlingen vises. 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 ekspressbibliotek.
Kodeforklaring:
- Vi definerer vårt "ekspress"-bibliotek, som skal brukes i applikasjonen vår.
- Vi definerer vår 'MongoDB' bibliotek, som vil bli brukt i vår applikasjon for å koble til vår MongoDB database.
- Her definerer vi URL-en til databasen vår som skal kobles til.
- Til slutt definerer vi en streng som skal brukes til å lagre vår samling av medarbeider-ID som må vises i nettleseren senere.
Trinn 2) I dette trinnet skal vi nå hente alle postene i vår 'Ansatt'-samling og jobbe med dem deretter.
Kodeforklaring:
- Vi oppretter en rute til applikasjonen vår kalt "Ansatt". Så når noen surfer til http://localhost:3000/Employeeid av applikasjonen vår, vil kodebiten som er definert for denne ruten bli utført.
- Her får vi alle postene i 'Employee'-samlingen vår gjennom kommandoen db.collection('Employee').find(). Vi tildeler deretter denne samlingen til en variabel kalt markør. Ved å bruke denne markørvariabelen vil vi kunne bla gjennom alle postene i samlingen.
- Vi bruker nå funksjonen cursor.each() for å navigere gjennom alle postene i samlingen vår. For hver post skal vi definere en kodebit om hva som skal gjøres når hver post åpnes.
- Til slutt ser vi at hvis posten som returneres ikke er null, tar vi medarbeideren via kommandoen "vare.Ansatt". Resten av koden er bare for å konstruere en skikkelig 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 nettsiden og få applikasjonen vår til å lytte på en bestemt port.
Kodeforklaring:
- Her sender vi hele innholdet som ble konstruert i det tidligere trinnet til vår nettside. 'res'-parameteren lar oss sende innhold til nettsiden vår som et svar.
- Vi får hele Node.js-applikasjonen vår til å lytte på port 3000.
Utgang:
Fra utgangen,
- Det viser tydelig at alle ansatte-ID-ene i Ansatt-samlingen ble hentet. Dette er fordi vi bruker MongoDB driver for å koble til databasen og hente alle ansattpostene og brukte deretter "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 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() {});
OBS: cursor.each kan være utdatert basert på versjonen av din MongoDB sjåfør. 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 + "</br>"; } }, function(err) { res.send(err); db.close(); } ); }); }); var server = app.listen(8080, function() {});
Oppsummering
- Node.js brukes sammen med NoSQL databaser for å bygge mange moderne webapplikasjoner. 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 kalt 'MongoDB.' Denne modulen installeres via Node-pakkebehandlingen.
- Med MongoDB modul, er det mulig å spørre etter poster i en samling og utføre vanlige oppdaterings-, slette- og innsettingsoperasjoner.
- Til slutt, en av de moderne praksisene er å bruke det ekspressive rammeverket sammen med MongoDB å levere moderne applikasjoner. Express-rammeverket kan gjøre bruk av dataene som returneres av MongoDB driver og vise dataene til brukeren på nettsiden tilsvarende.