Node.js MongoDB Урок с примери
Почти всички съвременни уеб приложения имат някаква система за съхранение на данни в backend системата. Например, ако вземем случая с онлайн магазин...ping приложение, данни като цената на даден артикул биха се съхранявали в базата данни.
Рамката Node js може да работи с бази данни както с релационни (като напр Oracle и MS SQL Server) и нерелационни бази данни (като напр MongoDB). В този урок ще видим как можем да използваме бази данни от приложения на Node js.
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.
По време на тази глава ще видим
Как можем да установим връзки с a 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
- Създаване и затваряне на връзка към a MongoDB база данни. Кодовият фрагмент по-долу показва как да създадете и затворите връзка към a MongoDB база данни.
Code Обяснение:
- Първата стъпка е да включите модула mongoose, което става чрез функцията require. След като този модул е на място, можем да използваме необходимите функции, налични в този модул, за да създадем връзки към базата данни.
- След това посочваме нашия низ за свързване към базата данни. В низа за свързване има 3 ключови стойности, които се предават.
- Първият е 'mongodb', който указва, че се свързваме към база данни на mongoDB.
- Следващото е „localhost“, което означава, че се свързваме към база данни на локалната машина.
- Следващото е „EmployeeDB“, което е името на базата данни, дефинирана в нашата MongoDB база данни.
- Следващата стъпка е всъщност да се свържете с нашата база данни. Функцията за свързване приема нашия URL адрес и има възможността да посочи функция за обратно извикване. Ще бъде извикан, когато се отвори връзката към базата данни. Това ни дава възможност да разберем дали връзката с базата данни е била успешна или не.
- Във функцията ние записваме низа „Установена връзка“ към конзолата, за да покажем, че е създадена успешна връзка.
- И накрая, ние затваряме връзката с помощта на оператора db.close.
Ако горният код се изпълни правилно, низът „Connected“ ще бъде записан в конзолата, както е показано по-долу.
- Запитване за данни в a 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);
});
});
Code Обяснение:
- В първата стъпка създаваме курсор (Курсорът е указател, който се използва за насочване към различните записи, извлечени от база данни. След това курсорът се използва за итерация през различните записи в базата данни. Тук дефинираме име на променлива, наречено курсор, което ще се използва за съхраняване на указателя към записите, извлечени от базата данни), което сочи към записите, извлечени от колекцията 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"
});
});
Code Обяснение:
- Тук използваме метода insertOne от MongoDB библиотека за вмъкване на документ в колекцията Employee.
- Ние уточняваме подробностите за документа за това какво трябва да се вмъкне в колекцията на служителите.
Ако сега проверите съдържанието на вашия MongoDB база данни, ще намерите записа с Employeeid от 4 и EmployeeName на „NewEmployee“, вмъкнат в колекцията Employee.
Забележка: Конзолата няма да покаже никакъв изход, защото записът се вмъква в базата данни и тук не може да се покаже изход.
За да проверите дали данните са правилно вмъкнати в базата данни, трябва да изпълните следните команди MongoDB
- Използвайте EmployeeDB
- db.Employee.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"
}
});
});
Code Обяснение:
- Тук използваме метода „updateOne“ от MongoDB библиотека, която се използва за актуализиране на документ в колекция mongoDB.
- Уточняваме критериите за търсене кой документ трябва да бъде актуализиран. В нашия случай искаме да намерим документа, който има EmployeeName на „NewEmployee“.
- След това искаме да зададем стойността на EmployeeName на документа от „NewEmployee“ на „Mohan“.
Ако сега проверите съдържанието на вашия MongoDB база данни, ще намерите записа с Employeeid от 4 и EmployeeName на „Mohan“, актуализиран в колекцията Employee.
За да проверите дали данните са правилно актуализирани в базата данни, трябва да изпълните следните команди в MongoDB
- Използвайте EmployeeDB
- db.Employee.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"
}
);
});
Code Обяснение:
- Тук използваме метода „deleteOne“ от MongoDB библиотека, която се използва за изтриване на документ в колекция mongoDB.
- Уточняваме критериите за търсене кой документ трябва да бъде изтрит. В нашия случай искаме да намерим документа, който има EmployeeName на „Mohan“ и да изтрием този документ.
Ако сега проверите съдържанието на вашия MongoDB база данни, ще намерите записа с Employeeid от 4 и EmployeeName на „Mohan“, изтрит от колекцията Employee.
За да проверите дали данните са правилно актуализирани в базата данни, трябва да изпълните следните команди в MongoDB
- Използвайте EmployeeDB
- db.Employee.find()
Първият израз гарантира, че сте свързани към базата данни EmployeeDb. Вторият оператор търси и показва всички записи в колекцията на служителите. Тук можете да видите дали записът е изтрит или не.
Как да създадете node express приложение с MongoDB за съхраняване и обслужване на съдържание
Създаване на приложение с комбинация от използване на експресни и MongoDB е доста често срещано в наши дни.
Когато работите с JavaСценарий уеб базирани приложения, тук обикновено се използва терминът СРЕДЕН стек.
- Терминът MEAN стек се отнася до колекция от JavaБазирани на скриптове технологии, използвани за разработване на уеб приложения.
- MEAN е акроним за MongoDB, ExpressJS, AngularJS, и Node.js.
Следователно винаги е добре да разберете как Node.js и MongoDB работят заедно, за да предоставят приложения, които взаимодействат с бекенд бази данни.
Нека да разгледаме прост пример за това как можем да използваме „express“ и „MongoDB” заедно. Нашият пример ще използва същата колекция Employee в MongoDB База данни EmployeeDB.
Сега ще включим Express за показване на данните на нашата уеб страница, когато това бъде поискано от потребителя. Когато нашето приложение работи на Node.js, може да се наложи да прегледате URL адреса http://localhost:3000/Employeeid.
Когато страницата се стартира, ще се покажат всички идентификатори на служители в колекцията Служители. Така че нека видим кодовия фрагмент в секции, които ще ни позволят да постигнем това.
Стъпка 1) Дефинирайте всички библиотеки, които трябва да се използват в нашето приложение, което в нашия случай е и двете MongoDB и експресна библиотека.
Code Обяснение:
- Дефинираме нашата „експресна“ библиотека, която ще се използва в нашето приложение.
- Ние определяме нашитеMongoDB' библиотека, която ще се използва в нашето приложение за свързване с нашия MongoDB база данни.
- Тук определяме URL адреса на нашата база данни, към която да се свържем.
- И накрая, ние дефинираме низ, който ще се използва за съхраняване на нашата колекция от идентификатори на служители, които трябва да бъдат показани в браузъра по-късно.
Стъпка 2) В тази стъпка сега ще вземем всички записи в нашата колекция „Служители“ и ще работим с тях по съответния начин.
Code Обяснение:
- Създаваме маршрут до нашето приложение, наречен „Employeeid“. Така че всеки път, когато някой разглежда http://localhost:3000/Employeeid на нашето приложение ще бъде изпълнен кодовият фрагмент, дефиниран за този маршрут.
- Тук получаваме всички записи в нашата колекция "Служител" чрез командата db.collection('Employee').find(). След това присвояваме тази колекция на променлива, наречена курсор. Използвайки тази променлива на курсора, ще можем да преглеждаме всички записи на колекцията.
- Сега използваме функцията cursor.each(), за да навигираме през всички записи на нашата колекция. За всеки запис ще дефинираме кодов фрагмент за това какво да се прави при достъп до всеки запис.
- Накрая виждаме, че ако върнатият запис не е нулев, тогава вземаме служителя чрез командата „item.Employeeid“. Останалата част от кода е само за създаване на правилен HTML код, който ще позволи нашите резултати да се показват правилно в браузъра.
Стъпка 3) В тази стъпка ще изпратим нашия изход към уеб страницата и ще накараме нашето приложение да слуша на определен порт.
Code Обяснение:
- Тук изпращаме цялото съдържание, създадено в по-ранната стъпка, към нашата уеб страница. Параметърът „res“ ни позволява да изпращаме съдържание на нашата уеб страница като отговор.
- Правим цялото си приложение Node.js да слуша на порт 3000.
Изход:
От изхода,
- Това ясно показва, че всички идентификатори на служители в колекцията на служителите са извлечени. Това е така, защото използваме MongoDB драйвер за свързване с базата данни и извличане на всички записи на служители и впоследствие използва „експресно“ за показване на записите.
Ето кода за справка
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() {});
Забележка: 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 + "</br>";
}
}, function(err) {
res.send(err);
db.close();
}
);
});
});
var server = app.listen(8080, function() {});
Oбобщение
- Node.js се използва във връзка с NoSQL бази данни за изграждане на много съвременни уеб приложения. Някои от често използваните бази данни са MySQL намлява MongoDB.
- Един от най-често използваните модули за работа MongoDB бази данни е модул, наречен "MongoDB.' Този модул се инсталира чрез мениджъра на пакети Node.
- С MongoDB модул, е възможно да се правят заявки за записи в колекция и да се извършват нормалните операции за актуализиране, изтриване и вмъкване.
- И накрая, една от съвременните практики е да се използва експресната рамка заедно с MongoDB за предоставяне на съвременни приложения. Рамката Express може да използва данните, върнати от MongoDB драйвер и съответно показва данните на потребителя в уеб страницата.











