В основном, все современные веб-приложения имеют какую-то систему хранения данных на сервере. Например, если вы используете приложение для покупок через Интернет, такие данные, как цена товара, будут храниться в базе данных.
Инфраструктура Node js может работать с базами данных как с реляционными (такими как Oracle и MS SQL Server), так и с нереляционными базами данных (такими как MongoDB). В этом руководстве мы увидим, как мы можем использовать базы данных из приложений Node js.
В этом уроке вы узнаете
- Node.js и базы данных NoSQL
- Использование MongoDB и Node.js
- Как создать приложение для экспресс-узла с 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.
- Следующим шагом является подключение к нашей базе данных. Функция connect принимает наш URL и имеет возможность указать функцию обратного вызова. Он будет вызываться при открытии соединения с базой данных. Это дает нам возможность узнать, было ли соединение с базой данных успешным или нет.
- В функции мы записываем строку «Соединение установлено» в консоль, чтобы указать, что соединение было успешно установлено.
- Наконец, мы закрываем соединение с помощью оператора db.close.
Если приведенный выше код выполняется правильно, строка «Подключено» будет записана в консоль, как показано ниже.
- Запрос данных в базе данных 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 «Мохан» и удалить этот документ.
Если вы сейчас проверите содержимое своей базы данных MongoDB, вы найдете запись с Employeeid 4 и EmployeeName «Mohan», удаленными из коллекции Employee.
Чтобы убедиться, что данные были правильно обновлены в базе данных, вам необходимо выполнить следующие команды в MongoDB
- Использовать EmployeeDB
- db.Employee.find ()
Первый оператор гарантирует, что вы подключены к базе данных EmployeeDb. Второй оператор ищет и отображает все записи в коллекции сотрудников. Здесь вы можете увидеть, была ли запись удалена или нет.
Как создать приложение для экспресс-узла с 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 .
Когда страница запускается, будет отображаться весь идентификатор сотрудника в коллекции Employee. Итак, давайте посмотрим фрагмент кода в разделах, которые позволят нам добиться этого.
Шаг 1) Определите все библиотеки, которые должны использоваться в нашем приложении, которое в нашем случае является и MongoDB, и экспресс-библиотекой.
Объяснение кода:
- Мы определяем нашу «экспресс» библиотеку, которая будет использоваться в нашем приложении.
- Мы определяем нашу «экспресс» библиотеку, которая будет использоваться в нашем приложении для подключения к нашей базе данных MongoDB.
- Здесь мы определяем URL нашей базы данных для подключения.
- Наконец, мы определяем строку, которая будет использоваться для хранения нашей коллекции идентификаторов сотрудников, которые впоследствии должны будут отображаться в браузере.
Шаг 2) На этом этапе мы собираемся собрать все записи в нашей коллекции «Сотрудник» и поработать с ними соответствующим образом.
Объяснение кода:
- Мы создаем маршрут к нашему приложению под названием «Employeeid». Поэтому, когда кто-нибудь просматривает http: // localhost: 3000 / Employeeid нашего приложения, будет выполняться фрагмент кода, определенный для этого маршрута.
- Здесь мы получаем все записи в нашей коллекции Employee с помощью команды db.collection (‘Employee’). Find (). Затем мы присваиваем эту коллекцию переменной, называемой курсором. Используя эту переменную курсора, мы сможем просмотреть все записи коллекции.
- Теперь мы используем функцию cursor.each () для навигации по всем записям нашей коллекции. Для каждой записи мы собираемся определить фрагмент кода о том, что делать при доступе к каждой записи.
- Наконец, мы видим, что если возвращаемая запись не равна нулю, то мы берем сотрудника с помощью команды «item.Employeeid». Остальная часть кода предназначена только для создания правильного HTML-кода, который позволит правильно отображать наши результаты в браузере.
Шаг 3) На этом шаге мы собираемся отправить наш вывод на веб-страницу и заставить наше приложение прослушивать определенный порт.
Объяснение кода:
- Здесь мы отправляем весь контент, созданный на предыдущем этапе, на нашу веб-страницу. Параметр res позволяет нам отправлять контент на нашу веб-страницу в качестве ответа.
- Мы заставляем наше приложение Node.js прослушивать порт 3000.
Вывод:
Из вывода
- Это ясно показывает, что все данные employeeid в коллекции Employee были найдены. Это связано с тем, что мы используем драйвер MongoDB для подключения к базе данных и извлечения всех записей Employee, а затем используем «экспресс» для отображения записей.
Вот код для вашей справки
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() {});
Резюме
- Node.js используется в сочетании с базами данных NoSQL для создания многих современных веб-приложений. Некоторые из распространенных баз данных — MySQL и MongoDB.
- Одним из распространенных модулей, используемых для работы с базами данных MongoDB, является модуль под названием MongoDB. Этот модуль устанавливается через менеджер пакетов Node.
- С модулем MongoDB можно запрашивать записи в коллекции и выполнять обычные операции обновления, удаления и вставки.
- Наконец, одним из современных методов является использование экспресс-инфраструктуры вместе с MongoDB для предоставления современных приложений. Платформа Express может использовать данные, возвращаемые драйвером MongoDB, и отображать данные пользователю на веб-странице соответственно.