Enamasti on kõigi tänapäevaste veebirakenduste taustal mingi andmesalvestussüsteem. Näiteks kui võtta veebiostu rakendus, salvestataks andmebaasi sellised andmed nagu kauba hind.
Node js raamistik suudab töötada nii relatsiooniliste (nagu Oracle ja MS SQL Server) kui ka mitterelatsiooniliste (näiteks MongoDB) andmebaasidega. Selles õpetuses näeme, kuidas saame kasutada Node js rakenduste andmebaase.
Selles õpetuses saate teada
- Node.js ja NoSQL andmebaasid
- Kasutades MongoDB ja Node.js
- Kuidas luua MongoDB-ga sõlme ekspressrakendus sisu salvestamiseks ja esitamiseks
Node.js ja NoSQL andmebaasid
Aastate jooksul on NoSQL-i andmebaasid nagu MongoDB ja MySQL muutunud andmebaasidena andmete salvestamiseks üsna populaarseks. Nende andmebaaside võime kuulsaks teeb nende andmebaaside võime salvestada mis tahes tüüpi sisu ja eriti mis tahes tüüpi vormingus.
Node.js-l on võimalus töötada nii MySQL-i kui ka MongoDB-ga andmebaasidena. Kummagi andmebaasi kasutamiseks peate Node'i paketihalduri abil alla laadima ja kasutama vajalikke mooduleid.
MySQL-i puhul nimetatakse vajalikku moodulit "mysql" ja MongoDB kasutamiseks on vajalik installitav moodul "Mongoose".
Nende moodulitega saate Node.js-is teha järgmisi toiminguid
- Ühenduse koondamise haldamine - siin saate määrata MySQL-i andmebaasiühenduste arvu, mida Node.js peaks säilitama ja salvestama.
- Looge ja sulgege ühendus andmebaasiga. Mõlemal juhul võite pakkuda tagasihelistamisfunktsiooni, mida saab kutsuda alati, kui käivitatakse ühenduse loomise ja sulgemise meetodid.
- Päringuid saab teostada andmete saamiseks vastavatest andmebaasidest.
- Nende moodulitega on võimalik saavutada ka andmete manipuleerimine, näiteks andmete sisestamine, andmete kustutamine ja värskendamine.
Ülejäänud teemade puhul uurime, kuidas saaksime töötada Nong.js-i MongoDB andmebaasidega.
Kasutades MongoDB ja Node.js
Nagu eelmises teemas käsitletud, on MongoDB üks populaarsemaid andmebaase, mida kasutatakse koos Node.js-ga.
Selle peatüki jooksul näeme
Kuidas luua ühendusi MongoDB andmebaasiga
Kuidas saame teha tavapäraseid toiminguid nii andmebaasist andmete lugemisel kui ka kirjete sisestamisel, kustutamisel ja värskendamisel MongoDB andmebaasi.
Oletame selle peatüki eesmärgil, et meil on allpool toodud MongoDB andmed olemas.
Andmebaasi nimi: EmployeeDB
Kollektsiooni nimi: töötaja
Documents{{Employeeid : 1, Employee Name : Guru99},{Employeeid : 2, Employee Name : Joe},{Employeeid : 3, Employee Name : Martin},}
- NPM-moodulite installimine
Mongole juurdepääsu saamiseks Node'i rakenduses vajate draiverit. Saadaval on mitu Mongo draiverit, kuid MongoDB on üks populaarsemaid. MongoDB mooduli installimiseks käivitage järgmine käsk
npm installige mongodb
- MongoDB andmebaasiga ühenduse loomine ja sulgemine. Allpool olev koodilõik näitab, kuidas luua ja sulgeda ühendus MongoDB andmebaasiga.
Koodi selgitus:
- Esimene samm on kaasata mongoose moodul, mis toimub nõutava funktsiooni kaudu. Kui see moodul on paigas, saame andmebaasis ühenduste loomiseks kasutada selles moodulis saadaolevaid vajalikke funktsioone.
- Järgmisena täpsustame oma ühenduse stringi andmebaasiga. Connect-stringis on 3 võtmeväärtust, mis edastatakse.
- Esimene on 'mongodb', mis täpsustab, et me loome ühenduse mongoDB andmebaasiga.
- Järgmine on 'localhost', mis tähendab, et me ühendume kohaliku masina andmebaasiga.
- Järgmine on 'EmployeeDB', mis on meie MongoDB andmebaasis määratletud andmebaasi nimi.
- Järgmine samm on meie andmebaasiga ühenduse loomine. Ühendusfunktsioon võtab sisse meie URL-i ja võimaldab määrata tagasihelistamisfunktsiooni. Seda kutsutakse, kui ühendus andmebaasiga avatakse. See annab meile võimaluse teada, kas andmebaasiühendus õnnestus või mitte.
- Funktsioonis kirjutame konsoolile stringi "Ühendus loodud", mis näitab eduka ühenduse loomist.
- Lõpuks sulgeme ühenduse, kasutades käsku db.close.
Kui ülaltoodud kood on õigesti täidetud, kirjutatakse konsoolile string "Ühendatud", nagu allpool näidatud.
- Andmete pärimine MongoDB andmebaasis - MongoDB draiveri abil saame andmeid tuua ka MongoDB andmebaasist.
Allpool olevas jaotises näidatakse, kuidas saame draiverit kasutada kõigi meie töötajate kollektsiooni dokumentide toomiseks meie andmebaasis EmployeeDB. See on meie MongoDB andmebaasi kogu, mis sisaldab kõiki töötajatega seotud dokumente. Igal dokumendil on dokumendi väärtuste määratlemiseks objekti ID, töötaja nimi ja töötaja ID.
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);});});
Koodi selgitus:
-
Esimeses etapis loome kursori (kursor on osuti, mida kasutatakse andmebaasist toodud erinevate kirjete näitamiseks. Seejärel kasutatakse kursorit andmebaasi erinevate kirjete itereerimiseks. Siin määratleme muutuja nimi, mida nimetatakse kursoriks, mida kasutatakse kursori salvestamiseks andmebaasist tõmmatud kirjetele.), mis osutab MongoDb kollektsioonist toodud kirjetele. Meil on ka võimalus täpsustada kollektsioon "Töötaja", kust kirjeid hankida. Funktsiooni find () kasutatakse selleks, et täpsustada, et soovime kõik dokumendid MongoDB kollektsioonist hankida.
-
Kordame nüüd läbi kursori ja iga kursori dokumendi puhul täidame funktsiooni.
-
Meie funktsioon on lihtsalt printida iga dokumendi sisu konsooli.
Märkus: - Andmebaasist on võimalik tuua ka konkreetne kirje. Seda saab teha, määrates otsingu tingimuse funktsioonis find (). Oletame näiteks, et kui tahtsite lihtsalt tuua kirje, millel on töötaja nimi Guru99, siis saab selle avalduse kirjutada järgmiselt
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
Kui ülaltoodud kood on edukalt täidetud, kuvatakse teie konsoolis järgmine väljund.
Väljund:
Väljundi põhjal
- Teil on selgelt näha, et kõik kogu dokumendid on kätte saadud. See on võimalik, kasutades mongoDB ühenduse (db) meetodit find () ja itreerides kursori abil kõik dokumendid.
- Dokumentide sisestamine kollektsiooni - dokumente saab kollektsiooni sisestada, kasutades meetodit insertOne, mille pakub MongoDB teek. Allpool olev koodilõik näitab, kuidas saame dokumendi mongoDB kogusse sisestada.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').insertOne({Employeeid: 4,EmployeeName: "NewEmployee"});});
Koodi selgitus:
- Siin kasutame dokumendi sisestamiseks töötaja kollektsiooni MongoDB teegi meetodit insertOne.
- Täpsustame dokumendi üksikasju selle kohta, mida tuleb lisada töötajate kollektsiooni.
Kui kontrollite nüüd oma MongoDB andmebaasi sisu, leiate töötaja kollektsiooni sisestatud kirje, mille Employeeid on 4 ja EmployeeName "NewEmployee".
Märkus . Konsool ei näita väljundit, kuna kirje sisestatakse andmebaasi ja siin ei saa väljundit näidata.
Andmete andmebaasi õigesti sisestamise kontrollimiseks peate MongoDB-s täitma järgmised käsud
- Kasutage EmployeeDB-d
- db.Employee.find ({Töötaja ID: 4})
Esimene väide tagab, et olete ühendatud EmployeeDb andmebaasiga. Teine lause otsib kirjet, mille töötaja ID on 4.
- Kogus olevate dokumentide värskendamine - dokumente saab kogu värskendada, kasutades meetodit updateOne, mille pakub MongoDB teek. Allpool olev koodilõik näitab, kuidas värskendada mongoDB-kogu dokumenti.
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"}});});
Koodi selgitus:
- Siin kasutame MongoDB teegi meetodit "updateOne", mida kasutatakse mongoDB kogu dokumendi värskendamiseks.
- Täpsustame, millist dokumenti tuleb värskendada. Meie puhul tahame leida dokumendi, mille EmployeeName on "NewEmployee".
- Seejärel soovime määrata dokumendi EmployeeName väärtuseks väärtusest "NewEmployee" väärtuseks "Mohan".
Kui kontrollite nüüd oma MongoDB andmebaasi sisu, leiate töötaja kollektsioonist värskendatud kirje Employeeid of 4 ja EmployeeName of "Mohan".
Andmete andmebaasis õigesti värskendamise kontrollimiseks peate MongoDB-s täitma järgmised käsud
- Kasutage EmployeeDB-d
- db.Employee.find ({Töötaja ID: 4})
Esimene väide tagab, et olete ühendatud EmployeeDb andmebaasiga. Teine lause otsib kirjet, mille töötaja ID on 4.
- Kogus olevate dokumentide kustutamine - dokumente saab kogust kustutada, kasutades meetodit "deleteOne", mille pakub MongoDB teek. Allpool olev koodilõik näitab, kuidas dokumenti mongoDB kogust kustutada.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').deleteOne({"EmployeeName": "Mohan"});});
Koodi selgitus:
- Siin kasutame MongoDB teegist meetodit "deleteOne", mida kasutatakse mongoDB kogu dokumendi kustutamiseks.
- Täpsustame kustutatava dokumendi otsingukriteeriume. Meie puhul soovime leida dokumendi, millel on EmployeeName "Mohan", ja kustutada see dokument.
Kui kontrollite nüüd oma MongoDB andmebaasi sisu, leiate töötaja kollektsioonist kustutatud kirje, mille Employeeid on 4 ja "Mohan" EmployeeName.
Andmete andmebaasis õigesti värskendamise kontrollimiseks peate MongoDB-s täitma järgmised käsud
- Kasutage EmployeeDB-d
- db.töötaja.find ()
Esimene väide tagab, et olete ühendatud EmployeeDb andmebaasiga. Teises avalduses otsitakse ja kuvatakse kõik töötajate kollektsiooni kirjed. Siin näete, kas kirje on kustutatud või mitte.
Kuidas luua MongoDB-ga sõlme ekspressrakendus sisu salvestamiseks ja esitamiseks
Rakenduse loomine nii ekspress- kui ka MongoDB-de kombinatsiooniga on tänapäeval üsna tavaline.
JavaScripti veebipõhiste rakendustega töötades on siin tavaliselt termin MEAN stack.
- Mõiste MEAN stack tähendab veebirakenduste arendamiseks kasutatavat JavaScripti põhiste tehnoloogiate kogumit.
- MEAN on lühend MongoDB, ExpressJS, AngularJS ja Node.js.
Seega on alati hea mõista, kuidas Node.js ja MongoDB töötavad koos taustaprogrammi andmebaasidega suhtlevate rakenduste edastamiseks.
Vaatame lihtsat näidet selle kohta, kuidas saame kasutada "express" ja "MongoDB" koos. Meie näites kasutatakse sama töötaja kollektsiooni MongoDB EmployeeDB andmebaasis.
Nüüd lisame Expressi andmete kuvamiseks meie veebisaidil, kui kasutaja seda soovib. Kui meie rakendus töötab saidil Node.js, peate võib-olla sirvima URL-i http: // localhost: 3000 / Employeeid .
Lehe käivitamisel kuvatakse kogu töötaja ID kogu kollektsioonis Töötajad. Nii et vaatame koodilõiku jaotistes, mis võimaldavad meil seda saavutada.
Samm 1) Määratlege kõik teegid, mida tuleb meie rakenduses kasutada, mis meie puhul on nii MongoDB kui ka ekspressraamatukogu.
Koodi selgitus:
- Me määratleme oma ekspressraamatukogu, mida kasutatakse meie rakenduses.
- Me määratleme oma ekspressraamatukogu, mida kasutatakse meie rakenduses meie MongoDB andmebaasiga ühenduse loomiseks.
- Siin määratleme oma andmebaasi URL-i, millega ühendust luua.
- Lõpuks määratleme stringi, mida kasutatakse meie töötaja ID kollektsiooni salvestamiseks, mis tuleb hiljem brauseris kuvada.
Samm 2) Selles etapis võtame nüüd kõik oma töötaja kollektsiooni kirjed ja töötame nendega vastavalt.
Koodi selgitus:
- Loome marsruudi oma rakenduse nimega "Employeeid". Nii et kui keegi sirvib meie rakenduse veebisaiti http: // localhost: 3000 / Employeeid , käivitatakse selle marsruudi jaoks määratud koodilõik.
- Siit saame kõik meie kollektsiooni "Töötaja" kirjed käsu db.collection ("Töötaja"). Find () kaudu. Seejärel määrame selle kogu muutuja nimega kursor. Selle kursorimuutuja abil saame sirvida kogu kogu kirjet.
- Kasutame nüüd funktsiooni cursor.each (), et navigeerida kogu meie kogu kirjes. Iga kirje jaoks määratleme koodilõigu, mida teha, kui igale kirjele juurde pääsete.
- Lõpuks näeme, et kui tagastatud kirje pole null, siis võtame töötaja käsuga "item.Employeeid". Ülejäänud kood on lihtsalt õige HTML-koodi koostamiseks, mis võimaldab meie tulemusi brauseris õigesti kuvada.
Samm 3) Selles etapis saadame väljundi veebisaidile ja paneme oma rakenduse kuulama konkreetses pordis.
Koodi selgitus:
- Siin saadame kogu varasemas etapis koostatud sisu oma veebisaidile. Parameeter 'res' võimaldab meil vastuseks sisu oma veebisaidile saata.
- Paneme kogu oma Node.js-rakenduse kuulama porti 3000.
Väljund:
Väljundi põhjal
- See näitab selgelt, et kõik töötajate kollektsiooni töötajad leiti. Seda seetõttu, et me kasutame MongoDB draiverit andmebaasiga ühenduse loomiseks ja kõigi töötajate kirjete hankimiseks ning seejärel kasutasime kirjete kuvamiseks "express" -t.
Siin on teie viite kood
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() {});
Märkus. Cursor.each võib olla teie MongoDB draiveri versiooni põhjal vananenud. Probleemist möödahiilimiseks võite enne kursorit.each lisada // noinspection JSDeprecatedSymbols. Teise võimalusena võite kasutada forEachi. Allpool on näidiskood, kasutades forEachi
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() {});
Kokkuvõte
- Node.js-i kasutatakse koos NoSQL-i andmebaasidega paljude tänapäevaste veebirakenduste loomiseks. Mõned levinumad kasutatavad andmebaasid on MySQL ja MongoDB.
- Üks levinumaid mooduleid, mida kasutatakse MongoDB andmebaasidega töötamiseks, on moodul nimega 'MongoDB'. See moodul on installitud paketihalduri Node kaudu.
- MongoDB mooduliga on võimalik kollektsiooni kirjete kohta päringuid teha ja tavapäraseid värskendamis-, kustutamis- ja sisestamistoiminguid teha.
- Lõpuks on üks tänapäevaseid tavasid kasutada ekspressraamistikku koos MongoDB-ga tänapäevaste rakenduste edastamiseks. Expressi raamistik saab kasutada MongoDB draiveri tagastatud andmeid ja vastavalt kasutajale andmeid veebilehel kuvada.