Учебники

6) Node.js MongoDB

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

Инфраструктура 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

  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.

Node.js учебник MongoDB с примерами

Объяснение кода:

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

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

Node.js учебник MongoDB с примерами

  1. Запрос данных в базе данных MongoDB. Используя драйвер MongoDB, мы также можем получать данные из базы данных MongoDB.

    В следующем разделе показано, как мы можем использовать драйвер для получения всех документов из нашей коллекции Employee в нашей базе данных EmployeeDB. Это коллекция в нашей базе данных MongoDB, которая содержит все документы, связанные с сотрудниками. Каждый документ имеет идентификатор объекта, имя сотрудника и идентификатор сотрудника для определения значений документа.

Node.js учебник 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"})

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

Вывод:

Node.js учебник MongoDB с примерами

Из вывода

  • Вы сможете четко увидеть, что все документы из коллекции извлечены. Это возможно с помощью метода find () соединения mongoDB (db) и перебора всех документов с помощью курсора.
  1. Вставка документов в коллекцию. Документы можно вставить в коллекцию с помощью метода insertOne, предоставляемого библиотекой MongoDB. Приведенный ниже фрагмент кода показывает, как мы можем вставить документ в коллекцию mongoDB.

Node.js учебник 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.

Node.js учебник 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.

Node.js учебник 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 «Мохан» и удалить этот документ.

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

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

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

Node.js учебник MongoDB с примерами

Объяснение кода:

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

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

Node.js учебник MongoDB с примерами

Объяснение кода:

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

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

Node.js учебник MongoDB с примерами

Объяснение кода:

  1. Здесь мы отправляем весь контент, созданный на предыдущем этапе, на нашу веб-страницу. Параметр res позволяет нам отправлять контент на нашу веб-страницу в качестве ответа.
  2. Мы заставляем наше приложение Node.js прослушивать порт 3000.

Вывод:

Node.js учебник MongoDB с примерами

Из вывода

  • Это ясно показывает, что все данные 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, и отображать данные пользователю на веб-странице соответственно.