Практически все современные веб-приложения имеют какую-то систему хранения данных на бэкэнде. Например, если вы возьмете приложение для покупок в Интернете, такие данные, как цена товара, будут храниться в базе данных.
Платформа 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.
Пояснение к коду:
- Первый шаг - включить модуль mongoose, что выполняется с помощью функции require. Как только этот модуль будет установлен, мы сможем использовать необходимые функции, доступные в этом модуле, для создания подключений к базе данных.
- Далее мы указываем нашу строку подключения к базе данных. В строке подключения передаются 3 значения ключа.
- Первый - «mongodb», который указывает, что мы подключаемся к базе данных mongoDB.
- Следующим идет «localhost», что означает, что мы подключаемся к базе данных на локальном компьютере.
- Следующим идет «EmployeeDB» - имя базы данных, определенной в нашей базе данных MongoDB.
- Следующим шагом будет фактическое подключение к нашей базе данных. Функция подключения принимает наш URL-адрес и может указать функцию обратного вызова. Он будет вызываться при открытии соединения с базой данных. Это дает нам возможность узнать, было ли соединение с базой данных успешным или нет.
- В функции мы записываем в консоль строку «Соединение установлено», чтобы указать, что соединение было создано успешно.
- Наконец, мы закрываем соединение с помощью оператора db.close.
Если приведенный выше код выполнен правильно, в консоль будет записана строка «Connected», как показано ниже.
- Запрос данных в базе данных MongoDB. Используя драйвер MongoDB, мы также можем получать данные из базы данных MongoDB.
В следующем разделе будет показано, как мы можем использовать драйвер для получения всех документов из нашей коллекции Employee в нашей базе данных 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.
- Мы указываем детали документа, которые необходимо вставить в коллекцию 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"}});});
Пояснение к коду:
- Здесь мы используем метод 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"});});
Пояснение к коду:
- Здесь мы используем метод deleteOne из библиотеки MongoDB, который используется для удаления документа из коллекции mongoDB.
- Уточняем критерии поиска, какой документ нужно удалить. В нашем случае мы хотим найти документ с именем EmployeeName «Mohan» и удалить этот документ.
Если вы теперь проверите содержимое своей базы данных MongoDB, вы найдете запись с Employeeid, равным 4, и EmployeeName, равным «Mohan», удаленными из коллекции Employee.
Чтобы убедиться, что данные были правильно обновлены в базе данных, вам необходимо выполнить следующие команды в MongoDB
- Используйте EmployeeDB
- db.Employee.find ()
Первый оператор гарантирует, что вы подключены к базе данных EmployeeDb. Второй оператор выполняет поиск и отображение всех записей в коллекции сотрудников. Здесь вы можете увидеть, была ли удалена запись.
Как создать приложение node express с MongoDB для хранения и обслуживания контента
В настоящее время создание приложения с использованием Express и MongoDB является довольно распространенным явлением.
При работе с веб-приложениями на JavaScript здесь обычно используется термин «стек MEAN».
- Термин «стек MEAN» относится к набору технологий на основе JavaScript, используемых для разработки веб-приложений.
- MEAN - это аббревиатура от MongoDB, ExpressJS, AngularJS и Node.js.
Следовательно, всегда полезно понимать, как Node.js и MongoDB работают вместе для доставки приложений, которые взаимодействуют с внутренними базами данных.
Давайте посмотрим на простой пример того, как мы можем использовать выражения «express» и «MongoDB» вместе. В нашем примере будет использоваться та же коллекция Employee в базе данных MongoDB EmployeeDB.
Теперь мы добавим Express для отображения данных на нашей веб-странице по запросу пользователя. Когда наше приложение работает на Node.js, может потребоваться перейти по URL-адресу http: // localhost: 3000 / Employeeid .
При запуске страницы будут отображаться все идентификаторы сотрудников в коллекции сотрудников. Итак, давайте посмотрим фрагмент кода в разделах, которые позволят нам добиться этого.
Шаг 1) Определите все библиотеки, которые необходимо использовать в нашем приложении, которым в нашем случае являются как MongoDB, так и экспресс-библиотека.
Пояснение к коду:
- Мы определяем нашу «экспресс-библиотеку», которая будет использоваться в нашем приложении.
- Мы определяем нашу «экспресс-библиотеку», которая будет использоваться в нашем приложении для подключения к нашей базе данных MongoDB.
- Здесь мы определяем URL-адрес нашей базы данных для подключения.
- Наконец, мы определяем строку, которая будет использоваться для хранения нашей коллекции идентификаторов сотрудников, которые необходимо отобразить в браузере позже.
Шаг 2) На этом шаге мы собираемся получить все записи в нашей коллекции «Сотрудник» и работать с ними соответствующим образом.
Пояснение к коду:
- Мы создаем маршрут к нашему приложению под названием «Employeeid». Поэтому всякий раз, когда кто-либо переходит к http: // localhost: 3000 / Employeeid нашего приложения, фрагмент кода, определенный для этого маршрута, будет выполнен.
- Здесь мы получаем все записи в нашей коллекции «Сотрудник» с помощью команды db.collection («Сотрудник»). Find (). Затем мы назначаем эту коллекцию переменной с именем cursor. Используя эту переменную курсора, мы сможем просматривать все записи коллекции.
- Теперь мы используем функцию cursor.each () для навигации по всем записям нашей коллекции. Для каждой записи мы собираемся определить фрагмент кода о том, что делать при доступе к каждой записи.
- Наконец, мы видим, что если возвращенная запись не является нулем, то мы берем сотрудника с помощью команды «item.Employeeid». Остальная часть кода предназначена только для создания правильного HTML-кода, который позволит правильно отображать наши результаты в браузере.
Шаг 3) На этом шаге мы собираемся отправить наш вывод на веб-страницу и заставить наше приложение прослушивать определенный порт.
Пояснение к коду:
- Здесь мы отправляем на нашу веб-страницу весь контент, созданный на предыдущем шаге. Параметр res позволяет нам отправлять контент на нашу веб-страницу в качестве ответа.
- Мы заставляем все наше приложение Node.js прослушивать порт 3000.
Выход:
На выходе
- Это ясно показывает, что были получены все идентификаторы сотрудников в коллекции Employee. Это связано с тем, что мы используем драйвер 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 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, и соответственно отображать данные пользователю на веб-странице.