Node.js MongoDB Учебное пособие с примерами

Содержание:

Anonim

Практически все современные веб-приложения имеют какую-то систему хранения данных на бэкэнде. Например, если вы возьмете приложение для покупок в Интернете, такие данные, как цена товара, будут храниться в базе данных.

Платформа 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

  1. Управление пулом подключений - здесь вы можете указать количество подключений к базе данных MySQL, которые должны поддерживаться и сохраняться Node.js.
  2. Создайте и закройте соединение с базой данных. В любом случае вы можете предоставить функцию обратного вызова, которая может вызываться всякий раз, когда выполняются методы соединения «создать» и «закрыть».
  3. Запросы могут выполняться для получения данных из соответствующих баз данных для получения данных.
  4. С помощью этих модулей также можно управлять данными, такими как вставка, удаление и обновление данных.

В оставшихся темах мы рассмотрим, как мы можем работать с базами данных 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},}
  1. Установка модулей NPM

Вам нужен драйвер для доступа к Mongo из приложения Node. Доступен ряд драйверов Mongo, но MongoDB является одним из самых популярных. Чтобы установить модуль MongoDB, выполните следующую команду

npm установить mongodb

  1. Создание и закрытие подключения к базе данных MongoDB. В приведенном ниже фрагменте кода показано, как создать и закрыть соединение с базой данных MongoDB.

Пояснение к коду:

  1. Первый шаг - включить модуль mongoose, что выполняется с помощью функции require. Как только этот модуль будет установлен, мы сможем использовать необходимые функции, доступные в этом модуле, для создания подключений к базе данных.
  2. Далее мы указываем нашу строку подключения к базе данных. В строке подключения передаются 3 значения ключа.
  • Первый - «mongodb», который указывает, что мы подключаемся к базе данных mongoDB.
  • Следующим идет «localhost», что означает, что мы подключаемся к базе данных на локальном компьютере.
  • Следующим идет «EmployeeDB» - имя базы данных, определенной в нашей базе данных MongoDB.
  1. Следующим шагом будет фактическое подключение к нашей базе данных. Функция подключения принимает наш URL-адрес и может указать функцию обратного вызова. Он будет вызываться при открытии соединения с базой данных. Это дает нам возможность узнать, было ли соединение с базой данных успешным или нет.
  2. В функции мы записываем в консоль строку «Соединение установлено», чтобы указать, что соединение было создано успешно.
  3. Наконец, мы закрываем соединение с помощью оператора db.close.

Если приведенный выше код выполнен правильно, в консоль будет записана строка «Connected», как показано ниже.

  1. Запрос данных в базе данных 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);});}); 

Пояснение к коду:

  1. На первом этапе мы создаем курсор (курсор - это указатель, который используется для указания на различные записи, извлеченные из базы данных. Затем курсор используется для итерации по различным записям в базе данных. Здесь мы определяем имя переменной, называемое курсором, которое будет использоваться для хранения указателя на записи, извлеченные из базы данных.), который указывает на записи, извлеченные из коллекции MongoDb. У нас также есть возможность указать коллекцию «Сотрудник», из которой будут извлекаться записи. Функция find () используется для указания того, что мы хотим получить все документы из коллекции MongoDB.

  2. Теперь мы перебираем наш курсор, и для каждого документа в курсоре мы собираемся выполнить функцию.

  3. Наша функция просто выведет содержимое каждого документа на консоль.

Примечание: - Также возможно получить определенную запись из базы данных. Это можно сделать, указав условие поиска в функции find (). Например, предположим, что если вы просто хотите получить запись с именем сотрудника Guru99, то этот оператор можно записать следующим образом

var cursor=db.collection('Employee').find({EmployeeName: "guru99"})

Если приведенный выше код выполнен успешно, в вашей консоли отобразится следующий вывод.

Выход:

На выходе

  • Вы сможете четко видеть, что все документы из коллекции извлечены. Это возможно с помощью метода find () соединения mongoDB (db) и перебора всех документов с помощью курсора.
  1. Вставка документов в коллекцию - документы могут быть вставлены в коллекцию с помощью метода 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"});});

Пояснение к коду:

  1. Здесь мы используем метод insertOne из библиотеки MongoDB для вставки документа в коллекцию Employee.
  2. Мы указываем детали документа, которые необходимо вставить в коллекцию Employee.

Если вы теперь проверите содержимое своей базы данных MongoDB, вы найдете запись с Employeeid, равным 4, и EmployeeName, равным «NewEmployee», вставленной в коллекцию Employee.

Примечание . Консоль не будет отображать никаких выходных данных, поскольку запись вставляется в базу данных, и здесь нельзя отображать выходные данные.

Чтобы убедиться, что данные были правильно вставлены в базу данных, вам необходимо выполнить следующие команды в MongoDB

  1. Используйте EmployeeDB
  2. db.Employee.find ({Employeeid: 4})

Первый оператор гарантирует, что вы подключены к базе данных EmployeeDb. Второй оператор ищет запись с идентификатором сотрудника 4.

  1. Обновление документов в коллекции - документы могут быть обновлены в коллекции с помощью метода 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"}});});

Пояснение к коду:

  1. Здесь мы используем метод updateOne из библиотеки MongoDB, который используется для обновления документа в коллекции mongoDB.
  2. Уточняем критерии поиска, какой документ необходимо обновить. В нашем случае мы хотим найти документ с именем EmployeeName «NewEmployee».
  3. Затем мы хотим установить значение EmployeeName документа с «NewEmployee» на «Mohan».

Если вы теперь проверите содержимое своей базы данных MongoDB, вы найдете запись с Employeeid, равным 4, и EmployeeName, равным «Mohan», обновленными в коллекции Employee.

Чтобы убедиться, что данные были правильно обновлены в базе данных, вам необходимо выполнить следующие команды в MongoDB

  1. Используйте EmployeeDB
  2. db.Employee.find ({Employeeid: 4})

Первый оператор гарантирует, что вы подключены к базе данных EmployeeDb. Второй оператор ищет запись с идентификатором сотрудника 4.

  1. Удаление документов в коллекции - документы могут быть удалены в коллекции с помощью метода 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"});});

Пояснение к коду:

  1. Здесь мы используем метод deleteOne из библиотеки MongoDB, который используется для удаления документа из коллекции mongoDB.
  2. Уточняем критерии поиска, какой документ нужно удалить. В нашем случае мы хотим найти документ с именем EmployeeName «Mohan» и удалить этот документ.

Если вы теперь проверите содержимое своей базы данных MongoDB, вы найдете запись с Employeeid, равным 4, и EmployeeName, равным «Mohan», удаленными из коллекции Employee.

Чтобы убедиться, что данные были правильно обновлены в базе данных, вам необходимо выполнить следующие команды в MongoDB

  1. Используйте EmployeeDB
  2. 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, так и экспресс-библиотека.

Пояснение к коду:

  1. Мы определяем нашу «экспресс-библиотеку», которая будет использоваться в нашем приложении.
  2. Мы определяем нашу «экспресс-библиотеку», которая будет использоваться в нашем приложении для подключения к нашей базе данных MongoDB.
  3. Здесь мы определяем URL-адрес нашей базы данных для подключения.
  4. Наконец, мы определяем строку, которая будет использоваться для хранения нашей коллекции идентификаторов сотрудников, которые необходимо отобразить в браузере позже.

Шаг 2) На этом шаге мы собираемся получить все записи в нашей коллекции «Сотрудник» и работать с ними соответствующим образом.

Пояснение к коду:

  1. Мы создаем маршрут к нашему приложению под названием «Employeeid». Поэтому всякий раз, когда кто-либо переходит к http: // localhost: 3000 / Employeeid нашего приложения, фрагмент кода, определенный для этого маршрута, будет выполнен.
  2. Здесь мы получаем все записи в нашей коллекции «Сотрудник» с помощью команды db.collection («Сотрудник»). Find (). Затем мы назначаем эту коллекцию переменной с именем cursor. Используя эту переменную курсора, мы сможем просматривать все записи коллекции.
  3. Теперь мы используем функцию cursor.each () для навигации по всем записям нашей коллекции. Для каждой записи мы собираемся определить фрагмент кода о том, что делать при доступе к каждой записи.
  4. Наконец, мы видим, что если возвращенная запись не является нулем, то мы берем сотрудника с помощью команды «item.Employeeid». Остальная часть кода предназначена только для создания правильного HTML-кода, который позволит правильно отображать наши результаты в браузере.

Шаг 3) На этом шаге мы собираемся отправить наш вывод на веб-страницу и заставить наше приложение прослушивать определенный порт.

Пояснение к коду:

  1. Здесь мы отправляем на нашу веб-страницу весь контент, созданный на предыдущем шаге. Параметр res позволяет нам отправлять контент на нашу веб-страницу в качестве ответа.
  2. Мы заставляем все наше приложение 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, и соответственно отображать данные пользователю на веб-странице.