Node.js MongoDB Tutorial med eksempler

Innholdsfortegnelse:

Anonim

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

  1. Administrer tilkoblingssamlingen - Her kan du angi antall MySQL-databaseforbindelser som skal vedlikeholdes og lagres av Node.js.
  2. 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.
  3. Spørringer kan utføres for å få data fra respektive databaser for å hente data.
  4. 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},}
  1. 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

  1. 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:

  1. 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.
  2. 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.
  1. 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.
  2. I funksjonen skriver vi strengen "Connection etablert" til konsollen for å indikere at en vellykket forbindelse ble opprettet.
  3. 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.

  1. 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:

  1. 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.

  2. Vi itererer nå gjennom markøren vår, og for hvert dokument i markøren skal vi utføre en funksjon.

  3. 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.
  1. 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:

  1. Her bruker vi insertOne-metoden fra MongoDB-biblioteket for å sette inn et dokument i ansattesamlingen.
  2. 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

  1. Bruk EmployeeDB
  2. 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.

  1. 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:

  1. Her bruker vi "updateOne" -metoden fra MongoDB-biblioteket, som brukes til å oppdatere et dokument i en mongoDB-samling.
  2. Vi spesifiserer søkekriteriene for hvilket dokument som må oppdateres. I vårt tilfelle ønsker vi å finne dokumentet som har medarbeidernavnet "Ny medarbeider."
  3. 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

  1. Bruk EmployeeDB
  2. 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.

  1. 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:

  1. Her bruker vi "deleteOne" -metoden fra MongoDB-biblioteket, som brukes til å slette et dokument i en mongoDB-samling.
  2. 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

  1. Bruk EmployeeDB
  2. 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:

  1. Vi definerer vårt "ekspressbibliotek", som skal brukes i applikasjonen vår.
  2. Vi definerer vårt "ekspressbibliotek", som skal brukes i applikasjonen vår for å koble til MongoDB-databasen vår.
  3. Her definerer vi URL-en til databasen vår for å koble til.
  4. 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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:

  1. 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.
  2. 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.