Почти всички съвременни уеб приложения имат някаква система за съхранение на данни в бекенда. Например, ако вземете случая с приложение за уеб пазаруване, в базата данни ще се съхраняват данни като цената на артикул.
Рамката Node js може да работи с бази данни както с релационни (като Oracle и MS SQL Server), така и с нерелационни бази данни (като MongoDB). В този урок ще видим как можем да използваме бази данни от приложенията на Node js.
В този урок ще научите -
- Node.js и NoSQL бази данни
- Използване на MongoDB и Node.js
- Как да изградим node express приложение с MongoDB за съхраняване и обслужване на съдържание
Node.js и NoSQL бази данни
През годините базата данни NoSQL като MongoDB и MySQL станаха доста популярни като бази данни за съхранение на данни. Способността на тези бази данни да съхраняват всякакъв вид съдържание и особено във всякакъв вид формат е това, което прави тези бази данни толкова известни.
Node.js има способността да работи както с MySQL, така и с MongoDB като бази данни. За да използвате някоя от тези бази данни, трябва да изтеглите и използвате необходимите модули, като използвате мениджъра на пакети Node.
За MySQL необходимият модул се нарича "mysql", а за използване на MongoDB необходимият модул, който трябва да бъде инсталиран, е "Mongoose".
С тези модули можете да извършвате следните операции в Node.js
- Управление на обединяването на връзки - Тук можете да посочите броя на връзките към базата данни на MySQL, които трябва да се поддържат и запазват от Node.js.
- Създайте и затворете връзка с база данни. И в двата случая можете да предоставите функция за обратно извикване, която може да бъде извикана всеки път, когато се изпълняват методите за свързване "създаване" и "затваряне".
- Заявките могат да се изпълняват, за да се получат данни от съответните бази данни за извличане на данни.
- С тези модули може да се постигне и манипулиране на данни, като вмъкване на данни, изтриване и актуализиране на данни.
За останалите теми ще разгледаме как можем да работим с бази данни на MongoDB в рамките на Node.js.
Използване на MongoDB и Node.js
Както беше обсъдено в по-ранната тема, MongoDB е една от най-популярните бази данни, използвани заедно с Node.js.
По време на тази глава ще видим
Как можем да установим връзки с база данни MongoDB
Как можем да изпълняваме нормалните операции на четене на данни от база данни, както и вмъкване, изтриване и актуализиране на записи в база данни MongoDB.
За целите на тази глава, нека приемем, че разполагаме с данните по-долу на MongoDB.
Име на базата данни: EmployeeDB
Име на колекцията: Служител
Documents{{Employeeid : 1, Employee Name : Guru99},{Employeeid : 2, Employee Name : Joe},{Employeeid : 3, Employee Name : Martin},}
- Инсталиране на NPM модулите
Трябва ви драйвер за достъп до Mongo от приложението Node. Налични са множество драйвери за Mongo, но MongoDB е сред най-популярните. За да инсталирате модула MongoDB, изпълнете командата по-долу
npm инсталирайте mongodb
- Създаване и затваряне на връзка с база данни MongoDB. По-долу кодов фрагмент показва как да създадете и затворите връзка с база данни MongoDB.
Обяснение на кода:
- Първата стъпка е да включите модула за мангуста, което се извършва чрез функцията за изискване. След като този модул е на мястото си, можем да използваме необходимите функции, налични в този модул, за да създадем връзки към базата данни.
- След това посочваме нашия низ за връзка с базата данни. В низа за свързване има 3 ключови стойности, които се предават.
- Първият е „mongodb“, който указва, че се свързваме с база данни mongoDB.
- Следващият е „localhost“, което означава, че се свързваме с база данни на локалната машина.
- Следващото е „EmployeeDB“, което е името на базата данни, дефинирана в нашата база данни MongoDB.
- Следващата стъпка е да се свържете с нашата база данни. Функцията за свързване приема нашия URL и има възможност за задаване на функция за обратно извикване. Той ще бъде извикан, когато връзката се отвори към базата данни. Това ни дава възможност да разберем дали връзката с базата данни е била успешна или не.
- Във функцията записваме низа „Връзката е установена“ към конзолата, за да покажем, че е създадена успешна връзка.
- И накрая, ние затваряме връзката с помощта на израза db.close.
Ако горният код се изпълни правилно, низът "Свързан" ще бъде записан в конзолата, както е показано по-долу.
- Заявка за данни в база данни MongoDB - Използвайки драйвера MongoDB, ние също можем да извлечем данни от базата данни MongoDB.
Разделът по-долу ще покаже как можем да използваме драйвера, за да извлечем всички документи от нашата колекция от служители в нашата база данни на EmployeeDB. Това е колекцията в нашата база данни MongoDB, която съдържа всички документи, свързани със служителите. Всеки документ има идентификатор на обект, име на служител и идентификатор на служител, за да дефинира стойностите на документа.
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);});});
Обяснение на кода:
-
В първата стъпка създаваме курсор (Курсорът е указател, който се използва, за да сочи към различните записи, извлечени от база данни. След това курсорът се използва за итерация през различните записи в базата данни. Тук дефинираме име на променлива, наречено курсор, което ще се използва за съхраняване на указателя към записите, извлечени от базата данни.), което сочи към записите, които са извлечени от колекцията MongoDb Също така разполагаме с улеснение за определяне на колекцията „Служител“, от която да се вземат записите. Функцията find () се използва, за да посочи, че искаме да извлечем всички документи от колекцията MongoDB.
-
Сега итерираме през курсора и за всеки документ в курсора ще изпълним функция.
-
Нашата функция просто ще отпечата съдържанието на всеки документ на конзолата.
Забележка: - Възможно е също да се извлече определен запис от база данни. Това може да се направи, като се посочи условието за търсене във функцията find (). Да предположим например, ако просто сте искали да извлечете записа, който има името на служителя като Guru99, тогава това изявление може да бъде написано по следния начин
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
Ако горният код се изпълни успешно, следният изход ще се покаже във вашата конзола.
Изход:
От изхода,
- Ще можете ясно да видите, че всички документи от колекцията са извлечени. Това е възможно чрез използването на метода find () на връзката mongoDB (db) и итерация през всички документи с помощта на курсора.
- Вмъкване на документи в колекция - Документите могат да се вмъкват в колекция с помощта на метода insertOne, предоставен от библиотеката MongoDB. Долният кодов фрагмент показва как можем да вмъкнем документ в колекция mongoDB.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').insertOne({Employeeid: 4,EmployeeName: "NewEmployee"});});
Обяснение на кода:
- Тук използваме метода insertOne от библиотеката MongoDB, за да вмъкнем документ в колекцията Employee.
- Посочваме подробностите за документа за това, какво трябва да се вмъкне в колекцията на служителите.
Ако сега проверите съдържанието на вашата база данни MongoDB, ще намерите записа с Employeeid от 4 и EmployeeName на „NewEfficiee“, вмъкнат в колекцията Employee.
Забележка: Конзолата няма да показва изход, тъй като записът се вмъква в базата данни и тук не може да се покаже изход.
За да проверите дали данните са правилно вмъкнати в базата данни, трябва да изпълните следните команди в MongoDB
- Използвайте EmployeeDB
- db.Efficiee.find ({Employeeid: 4})
Първото изявление гарантира, че сте свързани с базата данни EmployeeDb. Второто изявление търси записа, който има идентификационен номер на служителя 4.
- Актуализиране на документи в колекция - Документите могат да бъдат актуализирани в колекция, използвайки метода updateOne, предоставен от библиотеката MongoDB. По-долу кодов фрагмент показва как да актуализирате документ в колекция mongoDB.
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"}});});
Обяснение на кода:
- Тук използваме метода "updateOne" от библиотеката MongoDB, който се използва за актуализиране на документ в колекция mongoDB.
- Посочваме критериите за търсене кой документ трябва да бъде актуализиран. В нашия случай искаме да намерим документа, в който е EmployeeName на „NewEfficiee“.
- След това искаме да зададем стойността на EmployeeName на документа от „NewEfficiee“ на „Mohan“.
Ако сега проверите съдържанието на вашата база данни MongoDB, ще намерите актуализирания запис с Employeeid от 4 и EmployeeName на "Mohan" в колекцията Employee.
За да проверите дали данните са актуализирани правилно в базата данни, трябва да изпълните следните команди в MongoDB
- Използвайте EmployeeDB
- db.Efficiee.find ({Employeeid: 4})
Първото изявление гарантира, че сте свързани с базата данни EmployeeDb. Второто изявление търси записа, който има идентификационен номер на служителя 4.
- Изтриване на документи в колекция - Документите могат да бъдат изтрити в колекция, използвайки метода "deleteOne", предоставен от библиотеката MongoDB. Долният кодов фрагмент показва как да изтриете документ в колекция mongoDB.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').deleteOne({"EmployeeName": "Mohan"});});
Обяснение на кода:
- Тук използваме метода "deleteOne" от библиотеката MongoDB, който се използва за изтриване на документ в колекция mongoDB.
- Посочваме критериите за търсене кой документ трябва да бъде изтрит. В нашия случай искаме да намерим документа, който има EmployeeName на "Mohan" и да изтрием този документ.
Ако сега проверите съдържанието на вашата база данни MongoDB, ще намерите записа с Employeeid от 4 и EmployeeName на "Mohan", изтрит от колекцията Employee.
За да проверите дали данните са актуализирани правилно в базата данни, трябва да изпълните следните команди в MongoDB
- Използвайте EmployeeDB
- db.Efficiee.find ()
Първото изявление гарантира, че сте свързани с базата данни EmployeeDb. Второто извлечение търси и показва всички записи в колекцията на служителите. Тук можете да видите дали записът е изтрит или не.
Как да изградим node express приложение с MongoDB за съхраняване и обслужване на съдържание
Изграждането на приложение с комбинация от двете с помощта на express и MongoDB е доста разпространено в днешно време.
Когато работите с уеб базирани приложения, тук обикновено се използва терминът MEAN стек.
- Терминът MEAN стек се отнася до колекция от JavaScript базирани технологии, използвани за разработване на уеб приложения.
- MEAN е съкращение от MongoDB, ExpressJS, AngularJS и Node.js.
Следователно, винаги е добре да разберете как Node.js и MongoDB работят заедно, за да доставят приложения, които взаимодействат с бекенд бази данни.
Нека разгледаме един прост пример за това как можем да използваме „express“ и „MongoDB“ заедно. Нашият пример ще използва същата колекция от служители в базата данни на MongoDB EmployeeDB.
Сега ще включим Express, за да показваме данните на нашата уеб страница, когато това бъде поискано от потребителя. Когато приложението ни работи на Node.js, може да се наложи да прегледате URL адреса http: // localhost: 3000 / Employeeid .
При стартиране на страницата ще бъдат показани всички идентификатори на служителите в колекцията Служител. Така че нека видим кодовия фрагмент в раздели, които ще ни позволят да постигнем това.
Стъпка 1) Определете всички библиотеки, които трябва да се използват в нашето приложение, което в нашия случай е както MongoDB, така и експресната библиотека.
Обяснение на кода:
- Определяме нашата „експресна“ библиотека, която ще се използва в нашето приложение.
- Определяме нашата „експресна“ библиотека, която ще се използва в нашето приложение за свързване към нашата база данни MongoDB.
- Тук дефинираме URL адреса на нашата база данни, към който да се свържем.
- И накрая, дефинираме низ, който ще се използва за съхраняване на нашата колекция от идентификатори на служители, които трябва да бъдат показани в браузъра по-късно.
Стъпка 2) В тази стъпка сега ще получим всички записи в нашата колекция „Служител“ и ще работим с тях по съответния начин.
Обяснение на кода:
- Ние създаваме маршрут до нашето приложение, наречено „Employeeid“. Така че, когато някой прегледа http: // localhost: 3000 / Служител на нашето приложение, кодовият фрагмент, дефиниран за този маршрут, ще бъде изпълнен.
- Тук получаваме всички записи в нашата колекция „Служител“ чрез командата db.collection („Служител“). Find (). След това присвояваме тази колекция на променлива, наречена курсор. Използвайки тази променлива на курсора, ще можем да разглеждаме всички записи на колекцията.
- Сега използваме функцията cursor.each (), за да навигираме през всички записи от нашата колекция. За всеки запис ще дефинираме кодов фрагмент какво да се прави при достъп до всеки запис.
- И накрая, виждаме, че ако върнатият запис не е нула, тогава ще вземем служителя чрез командата "item.E Employeeid". Останалата част от кода е само за изграждане на правилен HTML код, който ще позволи резултатите ни да се показват правилно в браузъра.
Стъпка 3) В тази стъпка ще изпратим изхода си към уеб страницата и ще накараме нашето приложение да слуша на определен порт.
Обяснение на кода:
- Тук изпращаме цялото съдържание, създадено в по-ранната стъпка, на нашата уеб страница. Параметърът "res" ни позволява да изпращаме съдържание на нашата уеб страница като отговор.
- Ние правим цялото ни приложение Node.js да слуша на порт 3000.
Изход:
От изхода,
- Това ясно показва, че всички от служителите в колекцията на служителите са извлечени. Това е така, защото използваме драйвера MongoDB за свързване към базата данни и извличане на всички записи на служителите и впоследствие използваме „express“ за показване на записите.
Ето кода за справка
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() {});
Забележка: cursor.each може да е оттеглено въз основа на версията на вашия драйвер MongoDB. Можете да добавите // noinspection JSDeprecatedSymbols преди cursor.each, за да заобиколите проблема. Като алтернатива можете да използвате forEach. По-долу е примерен код, използващ 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() {});
Обобщение
- Node.js се използва заедно с базите данни NoSQL за изграждане на много съвременни уеб приложения. Някои от често използваните бази данни са MySQL и MongoDB.
- Един от често срещаните модули, използвани за работа с бази данни на MongoDB, е модул, наречен „MongoDB“. Този модул се инсталира чрез мениджъра на пакети Node.
- С модула MongoDB е възможно да се направи заявка за записи в колекция и да се извършат нормалните операции по актуализиране, изтриване и вмъкване.
- И накрая, една от съвременните практики е да се използва експресната рамка заедно с MongoDB за доставяне на съвременни приложения. Рамката Express може да използва данните, върнати от драйвера на MongoDB, и съответно да ги показва на потребителя в уеб страницата.