Node.js MongoDB Tutorial med eksempler

Indholdsfortegnelse:

Anonim

For det meste har alle moderne webapplikationer en slags datalagringssystem i backend. For eksempel, hvis du tager sagen om en web-shoppingapplikation, vil data såsom prisen på en vare blive gemt i databasen.

Node js-rammen kan arbejde med databaser med både relationel (såsom Oracle og MS SQL Server) og ikke-relationsdatabaser (såsom MongoDB). I denne vejledning vil vi se, hvordan vi kan bruge databaser fra Node js-applikationer.

I denne vejledning lærer du-

  • Node.js og NoSQL-databaser
  • Brug af MongoDB og Node.js
  • Sådan oprettes en node-ekspress-app med MongoDB til at gemme og servere indhold

Node.js og NoSQL-databaser

I årenes løb er NoSQL-database som MongoDB og MySQL blevet meget populær som databaser til lagring af data. Disse databases evne til at gemme enhver form for indhold og især i enhver form for format er, hvad der gør disse databaser så berømte.

Node.js har evnen til at arbejde med både MySQL og MongoDB som databaser. For at bruge en af ​​disse databaser skal du downloade og bruge de krævede moduler ved hjælp af Node-pakkehåndtering.

For MySQL kaldes det krævede modul "mysql", og for at bruge MongoDB er det krævede modul, der skal installeres, "Mongoose."

Med disse moduler kan du udføre følgende operationer i Node.js

  1. Administrer forbindelsespooling - Her kan du angive antallet af MySQL-databaseforbindelser, der skal vedligeholdes og gemmes af Node.js.
  2. Opret og luk en forbindelse til en database. I begge tilfælde kan du give en tilbagekaldsfunktion, som kan kaldes, når forbindelsesmetoderne "Opret" og "Luk" udføres.
  3. Forespørgsler kan udføres for at hente data fra respektive databaser for at hente data.
  4. Datamanipulation, såsom indsættelse af data, sletning og opdatering af data kan også opnås med disse moduler.

For de resterende emner vil vi se på, hvordan vi kan arbejde med MongoDB-databaser inden for Node.js.

Brug af MongoDB og Node.js

Som diskuteret i det tidligere emne er MongoDB en af ​​de mest populære databaser, der bruges sammen med Node.js.

I løbet af dette kapitel vil vi se

Hvordan vi kan etablere forbindelser med en MongoDB-database

Hvordan vi kan udføre de normale operationer ved læsning af data fra en database samt indsættelse, sletning og opdatering af poster i en MongoDB-database.

Lad os med henblik på dette kapitel antage, at vi har nedenstående MongoDB-data på plads.

Database navn: EmployeeDB

Samlingsnavn: Medarbejder

Documents{{Employeeid : 1, Employee Name : Guru99},{Employeeid : 2, Employee Name : Joe},{Employeeid : 3, Employee Name : Martin},}
  1. Installation af NPM-moduler

Du har brug for en driver for at få adgang til Mongo fra et Node-program. Der er et antal Mongo-drivere til rådighed, men MongoDB er blandt de mest populære. For at installere MongoDB-modulet skal du køre kommandoen nedenfor

npm installer mongodb

  1. Oprettelse og lukning af en forbindelse til en MongoDB-database. Nedenstående kodestykke viser, hvordan du opretter og lukker en forbindelse til en MongoDB-database.

Kode Forklaring:

  1. Det første trin er at inkludere Mongoose-modulet, hvilket gøres gennem funktionen kræver. Når dette modul er på plads, kan vi bruge de nødvendige funktioner i dette modul til at oprette forbindelser til databasen.
  2. Dernæst specificerer vi vores forbindelsesstreng til databasen. I forbindelsesstrengen er der 3 nøgleværdier, der sendes.
  • Den første er 'mongodb', som specificerer, at vi opretter forbindelse til en mongoDB-database.
  • Den næste er 'localhost', hvilket betyder, at vi opretter forbindelse til en database på den lokale maskine.
  • Den næste er 'EmployeeDB', som er navnet på den database, der er defineret i vores MongoDB-database.
  1. Det næste trin er faktisk at oprette forbindelse til vores database. Connect-funktionen tager vores URL ind og har mulighed for at specificere en tilbagekaldsfunktion. Det kaldes, når forbindelsen åbnes til databasen. Dette giver os mulighed for at vide, om databaseforbindelsen var vellykket eller ej.
  2. I funktionen skriver vi strengen "Forbindelse oprettet" til konsollen for at indikere, at der blev oprettet en vellykket forbindelse.
  3. Endelig lukker vi forbindelsen ved hjælp af db.close-erklæringen.

Hvis ovenstående kode udføres korrekt, vil strengen "Connected" blive skrevet til konsollen som vist nedenfor.

  1. Forespørgsel efter data i en MongoDB-database - Ved hjælp af MongoDB-driveren kan vi også hente data fra MongoDB-databasen.

    Nedenstående afsnit viser, hvordan vi kan bruge driveren til at hente alle dokumenterne fra vores medarbejdersamling i vores EmployeeDB-database. Dette er samlingen i vores MongoDB-database, som indeholder alle de medarbejderrelaterede dokumenter. Hvert dokument har et objekt-id, medarbejdernavn og medarbejder-id til at definere dokumentets værdier.

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 trin opretter vi en markør (En markør er en markør, der bruges til at pege på de forskellige poster, der er hentet fra en database. Markøren bruges derefter til at gentage gennem de forskellige poster i databasen. Her definerer vi en variabelnavn kaldet markør, der vil blive brugt til at gemme markøren til de poster, der er hentet fra databasen.) der peger på de poster, der hentes fra MongoDb-samlingen. Vi har også mulighed for at specificere samlingen 'Medarbejder', hvorfra vi kan hente journaler. Funktionen find () bruges til at angive, at vi vil hente alle dokumenterne fra MongoDB-samlingen.

  2. Vi gentager nu gennem vores markør, og for hvert dokument i markøren skal vi udføre en funktion.

  3. Vores funktion går simpelthen ud på at udskrive indholdet af hvert dokument til konsollen.

Bemærk: - Det er også muligt at hente en bestemt post fra en database. Dette kan gøres ved at angive søgebetingelsen i funktionen find (). Antag for eksempel, at hvis du bare ville hente den post, der har medarbejdernavnet som Guru99, kan denne erklæring skrives som følger

var cursor=db.collection('Employee').find({EmployeeName: "guru99"})

Hvis ovenstående kode udføres med succes, vises følgende output i din konsol.

Produktion:

Fra output,

  • Du vil være i stand til tydeligt at se, at alle dokumenter fra samlingen hentes. Dette er muligt ved hjælp af find () -metoden til mongoDB-forbindelsen (db) og gentages gennem alle dokumenter ved hjælp af markøren.
  1. Indsættelse af dokumenter i en samling - Dokumenter kan indsættes i en samling ved hjælp af insertOne-metoden fra MongoDB-biblioteket. Nedenstående kodestykke viser, hvordan vi kan indsætte 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 bruger vi insertOne-metoden fra MongoDB-biblioteket til at indsætte et dokument i medarbejdersamlingen.
  2. Vi specificerer dokumentoplysningerne om, hvad der skal indsættes i medarbejdersamlingen.

Hvis du nu kontrollerer indholdet af din MongoDB-database, finder du posten med Medarbejder på 4 og Medarbejdernavn for "Ny Medarbejder" indsat i Medarbejdersamlingen.

Bemærk: Konsollen viser ikke noget output, fordi posten indsættes i databasen, og ingen output kan vises her.

For at kontrollere, at dataene er korrekt indsat i databasen, skal du udføre følgende kommandoer i MongoDB

  1. Brug EmployeeDB
  2. db.Employee.find ({Medarbejderid: 4})

Den første erklæring sikrer, at du har forbindelse til EmployeeDb-databasen. Den anden erklæring søger efter posten, der har medarbejder-id'et på 4.

  1. Opdatering af dokumenter i en samling - Dokumenter kan opdateres i en samling ved hjælp af updateOne-metoden leveret af MongoDB-biblioteket. Nedenstående kodestykke viser, hvordan man opdaterer 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 bruger vi "updateOne" -metoden fra MongoDB-biblioteket, som bruges til at opdatere et dokument i en mongoDB-samling.
  2. Vi specificerer søgekriterierne for hvilket dokument der skal opdateres. I vores tilfælde vil vi finde det dokument, der har medarbejdernavnet "Ny medarbejder."
  3. Vi vil derefter indstille værdien af ​​dokumentets medarbejdernavn fra "Ny medarbejder" til "Mohan".

Hvis du nu tjekker indholdet af din MongoDB-database, finder du posten med Medarbejder på 4 og Medarbejdernavn for "Mohan" opdateret i Medarbejdersamlingen.

For at kontrollere, at dataene er opdateret korrekt i databasen, skal du udføre følgende kommandoer i MongoDB

  1. Brug EmployeeDB
  2. db.Employee.find ({Medarbejderid: 4})

Den første erklæring sikrer, at du har forbindelse til EmployeeDb-databasen. Den anden erklæring søger efter posten, der har medarbejder-id'et på 4.

  1. Sletning af dokumenter i en samling - Dokumenter kan slettes i en samling ved hjælp af "deleteOne" -metoden fra MongoDB-biblioteket. Nedenstående kodestykke 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 bruger vi "deleteOne" -metoden fra MongoDB-biblioteket, som bruges til at slette et dokument i en mongoDB-samling.
  2. Vi specificerer søgekriterierne for hvilket dokument der skal slettes. I vores tilfælde vil vi finde det dokument, der har medarbejdernavnet "Mohan" og slette dette dokument.

Hvis du nu tjekker indholdet af din MongoDB-database, finder du posten med Medarbejder på 4 og Medarbejdernavn på "Mohan" slettet fra Medarbejdersamlingen.

For at kontrollere, at dataene er opdateret korrekt i databasen, skal du udføre følgende kommandoer i MongoDB

  1. Brug EmployeeDB
  2. db.Employee.find ()

Den første erklæring sikrer, at du har forbindelse til EmployeeDb-databasen. Den anden erklæring søger og viser alle poster i medarbejdersamlingen. Her kan du se, om posten er slettet eller ej.

Sådan oprettes en node-ekspress-app med MongoDB til at gemme og servere indhold

Opbygning af en applikation med en kombination af både brug af express og MongoDB er ret almindelig i dag.

Når man arbejder med JavaScript-webbaserede applikationer, vil man normalt her med udtrykket MEAN stack.

  • Udtrykket MEAN stack henviser til en samling af JavaScript-baserede teknologier, der bruges til at udvikle webapplikationer.
  • MEAN er et akronym for MongoDB, ExpressJS, AngularJS og Node.js.

Derfor er det altid godt at forstå, hvordan Node.js og MongoDB arbejder sammen om at levere applikationer, der interagerer med backend-databaser.

Lad os se på et simpelt eksempel på, hvordan vi kan bruge "express" og "MongoDB" sammen. Vores eksempel vil bruge den samme medarbejderindsamling i MongoDB EmployeeDB-databasen.

Vi vil nu indarbejde Express for at få vist dataene på vores webside, når brugeren anmoder om det. Når vores ansøgning kører på Node.js, kan det være nødvendigt at gennemse URL'en http: // localhost: 3000 / Employeeid .

Når siden startes, vises hele medarbejder-id'et i medarbejdersamlingen. Så lad os se kodestykket i sektioner, der giver os mulighed for at opnå dette.

Trin 1) Definer alle de biblioteker, der skal bruges i vores applikation, som i vores tilfælde er både MongoDB og ekspresbiblioteket.

Kode Forklaring:

  1. Vi definerer vores 'ekspres' bibliotek, som vil blive brugt i vores applikation.
  2. Vi definerer vores 'ekspres' bibliotek, som vil blive brugt i vores applikation til at oprette forbindelse til vores MongoDB-database.
  3. Her definerer vi URL'en til vores database, der skal oprettes forbindelse til.
  4. Endelig definerer vi en streng, der bruges til at gemme vores samling af medarbejder-id, som skal vises i browseren senere.

Trin 2) I dette trin vil vi nu hente alle poster i vores 'Medarbejder'-samling og arbejde med dem i overensstemmelse hermed.

Kode Forklaring:

  1. Vi opretter en rute til vores ansøgning kaldet 'Employeeid'. Så når nogen gennemser til http: // localhost: 3000 / Medarbejder for vores applikation, udføres kodestykket, der er defineret for denne rute.
  2. Her får vi alle poster i vores 'Medarbejder'-samling gennem db.collection (' Medarbejder '). Find () kommando. Vi tildeler derefter denne samling til en variabel kaldet markør. Ved hjælp af denne markørvariabel kan vi gennemse alle posterne i samlingen.
  3. Vi bruger nu cursor.each () -funktionen til at navigere gennem alle posterne i vores samling. For hver post skal vi definere et kodestykke om, hvad vi skal gøre, når hver post er tilgængelig.
  4. Endelig ser vi, at hvis den returnerede post ikke er nul, så tager vi medarbejderen via kommandoen "item.Employeeid". Resten af ​​koden er bare at konstruere en ordentlig HTML-kode, der gør det muligt for vores resultater at blive vist korrekt i browseren.

Trin 3) I dette trin vil vi sende vores output til websiden og få vores applikation til at lytte på en bestemt port.

Kode Forklaring:

  1. Her sender vi hele indholdet, som blev konstrueret i det tidligere trin, til vores webside. Parameteren 'res' giver os mulighed for at sende indhold til vores webside som et svar.
  2. Vi lader hele vores Node.js-applikation lytte på port 3000.

Produktion:

Fra output,

  • Det viser tydeligt, at alle medarbejderid'erne i medarbejderindsamlingen blev hentet. Dette skyldes, at vi bruger MongoDB-driveren til at oprette forbindelse til databasen og hente alle medarbejderposter og efterfølgende brugte "express" til at vise posterne.

Her er koden til din reference

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() {});

Bemærk: cursor.each er muligvis udfaset baseret på versionen af ​​din MongoDB-driver. Du kan tilføje // noinspection JSDeprecatedSymbols før cursor.each for at omgå problemet. Alternativt kan du bruge forEach. Nedenfor er prøvekoden ved hjælp af 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() {});

Resumé

  • Node.js bruges i forbindelse med NoSQL-databaser til at opbygge mange moderne webapplikationer. Nogle af de almindelige anvendte databaser er MySQL og MongoDB.
  • Et af de almindelige moduler, der bruges til at arbejde med MongoDB-databaser, er et modul kaldet 'MongoDB.' Dette modul installeres via Node-pakkehåndteringen.
  • Med MongoDB-modulet er det muligt at forespørge efter poster i en samling og udføre den normale opdatering, sletning og indsættelse af operationer.
  • Endelig er en af ​​de moderne fremgangsmåder at bruge udtrykkelige rammer sammen med MongoDB til at levere moderne applikationer. Express-rammen kan bruge de data, der returneres af MongoDB-driveren, og vise dataene til brugeren på websiden i overensstemmelse hermed.