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.
- Управление пулом соединений. Здесь вы можете указать количество MySQL подключения к базе данных, которые должны поддерживаться и сохраняться Node.js.
- Создайте и закройте соединение с базой данных. В любом случае вы можете предоставить функцию обратного вызова, которую можно вызывать всякий раз, когда выполняются методы соединения «создать» и «закрыть».
- Могут выполняться запросы для получения данных из соответствующих баз данных для получения данных.
- С помощью этих модулей также можно выполнять манипуляции с данными, такие как вставка данных, удаление и обновление данных.
Что касается остальных тем, мы рассмотрим, как мы можем работать с MongoDB базы данных внутри Node.js.
. MongoDB и Node.js
Как обсуждалось в предыдущей теме, MongoDB — одна из самых популярных баз данных, используемых вместе с Node.js.
В этой главе мы увидим
Как мы можем установить связь с MongoDB база данных
Как мы можем выполнять обычные операции чтения данных из базы данных, а также вставки, удаления и обновления записей в базе данных? MongoDB .
Для целей этой главы предположим, что у нас есть следующее: MongoDB данные на месте.
Имя базы данных: СотрудникDB.
Название коллекции: Сотрудник
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. Как только этот модуль будет установлен, мы сможем использовать необходимые функции, доступные в этом модуле, для создания подключений к базе данных.
- Далее мы указываем нашу строку подключения к базе данных. В строке подключения передаются три ключевых значения.
- Первый — «mongodb», который указывает, что мы подключаемся к базе данных mongoDB.
- Следующий — «localhost», что означает, что мы подключаемся к базе данных на локальном компьютере.
- Следующим идет «EmployeeDB» — имя базы данных, определенной в нашем MongoDB .
- Следующим шагом будет фактическое подключение к нашей базе данных. Функция подключения принимает наш URL-адрес и имеет возможность указать функцию обратного вызова. Он будет вызван при открытии соединения с базой данных. Это дает нам возможность узнать, было ли подключение к базе данных успешным или нет.
- В функции мы выводим в консоль строку «Соединение установлено», чтобы указать, что успешное соединение создано.
- Наконец, мы закрываем соединение с помощью оператора db.close.
Если приведенный выше код выполнен правильно, строка «Подключено» будет записана в консоль, как показано ниже.
- Запрос данных в MongoDB база данных - С использованием MongoDB драйвер, мы также можем получить данные из MongoDB база данных. В разделе ниже показано, как мы можем использовать драйвер для получения всех документов из нашей коллекции сотрудников. в нашей базе данных StaffDB. Это коллекция в нашем 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); }); });
Пояснение к коду:
- На первом этапе мы создаем курсор (курсор — это указатель, который используется для указания на различные записи, извлеченные из базы данных. Затем курсор используется для итерации по различным записям в базе данных. Здесь мы определяем имя переменной с именем cursor, которое будет использоваться для хранения указателя на записи, извлеченные из базы данных.), который указывает на записи, извлеченные из коллекции 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 библиотека для вставки документа в коллекцию сотрудников.
- Мы указываем детали документа о том, что необходимо вставить в коллекцию «Сотрудник».
Если вы сейчас проверите содержимое вашего MongoDB В базе данных вы найдете запись с идентификатором сотрудника, равным 4, и именем сотрудника, равным «NewEmployee», вставленную в коллекцию сотрудников.
Примечание: Консоль не будет отображать никаких выводов, поскольку запись вставляется в базу данных, и вывод здесь невозможен.
Чтобы проверить, что данные были правильно вставлены в базу данных, вам необходимо выполнить следующие команды MongoDB
- Используйте базу данных сотрудников
- db.Employee.find({Employeeid :4 })
Первый оператор гарантирует, что вы подключены к базе данныхСотрудникDb. Второй оператор ищет запись с идентификатором сотрудника 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.
- Указываем критерии поиска, какой документ необходимо обновить. В нашем случае мы хотим найти документ, имя которого имеет значение «NewEmployee».
- Затем мы хотим установить значение имени сотрудника документа с «NewEmployee» на «Mohan».
Если вы сейчас проверите содержимое вашего MongoDB В базе данных вы найдете запись с идентификатором сотрудника 4 и именем сотрудника «Мохан», обновленную в коллекции сотрудников.
Чтобы проверить, что данные в базе данных были обновлены правильно, необходимо выполнить следующие команды MongoDB
- Используйте базу данных сотрудников
- db.Employee.find({Employeeid :4 })
Первый оператор гарантирует, что вы подключены к базе данныхСотрудникDb. Второй оператор ищет запись с идентификатором сотрудника 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.
- Указываем критерии поиска, какой документ нужно удалить. В нашем случае мы хотим найти документ с именем сотрудника «Мохан» и удалить этот документ.
Если вы сейчас проверите содержимое вашего MongoDB В базе данных вы найдете запись с идентификатором сотрудника 4 и именем сотрудника «Мохан», удаленную из коллекции сотрудников.
Чтобы проверить, что данные в базе данных были обновлены правильно, необходимо выполнить следующие команды MongoDB
- Используйте базу данных сотрудников
- db.Employee.find()
Первый оператор гарантирует, что вы подключены к базе данныхСотрудникDb. Второй оператор ищет и отображает все записи в коллекции сотрудников. Здесь вы можете увидеть, удалена запись или нет.
Как создать экспресс-приложение Node с помощью MongoDB для хранения и обслуживания контента
Создание приложения с использованием комбинации экспресс- и MongoDB в настоящее время довольно распространено.
При работе с JavaСценарий веб-приложениях здесь обычно используется термин MEAN stack.
- Термин MEAN-стек относится к набору JavaТехнологии на основе скриптов, используемые для разработки веб-приложений.
- МЕАН — это аббревиатура от MongoDB, ЭкспрессJS, угловойJS, и Node.js.
Следовательно, всегда полезно понимать, как Node.js и MongoDB работать вместе над созданием приложений, которые взаимодействуют с серверными базами данных.
Давайте посмотрим на простой пример того, как мы можем использовать «экспресс» и «MongoDB" вместе. В нашем примере будет использоваться та же коллекция сотрудников в MongoDB База данных сотрудниковDB.
Теперь мы включим Express для отображения данных на нашей веб-странице по запросу пользователя. Когда наше приложение работает на Node.js, может потребоваться перейти по URL-адресу. http://localhost:3000/Employeeid.
При запуске страницы будут отображаться все идентификаторы сотрудников в коллекции «Сотрудники». Итак, давайте посмотрим фрагмент кода по разделам, которые позволят нам добиться этого.
Шаг 1) Определите все библиотеки, которые необходимо использовать в нашем приложении, что в нашем случае является MongoDB и экспресс-библиотека.
Пояснение к коду:
- Мы определяем нашу «экспресс-библиотеку», которая будет использоваться в нашем приложении.
- Мы определяем нашиMongoDB'библиотека, которая будет использоваться в нашем приложении для подключения к нашему MongoDB .
- Здесь мы определяем URL-адрес нашей базы данных для подключения.
- Наконец, мы определяем строку, которая будет использоваться для хранения нашей коллекции идентификаторов сотрудников, которые позже необходимо отобразить в браузере.
Шаг 2) На этом этапе мы собираемся получить все записи из нашей коллекции «Сотрудники» и работать с ними соответствующим образом.
Пояснение к коду:
- Мы создаем маршрут к нашему приложению под названием «Employeeid». Поэтому всякий раз, когда кто-либо просматривает http://localhost:3000/Employeeid нашего приложения будет выполнен фрагмент кода, определенный для этого маршрута.
- Здесь мы получаем все записи из нашей коллекции «Сотрудник» с помощью команды db.collection('Employee').find(). Затем мы присваиваем эту коллекцию переменной с именем курсор. Используя эту курсорную переменную, мы сможем просмотреть все записи коллекции.
- Теперь мы используем функцию курсора.each() для навигации по всем записям нашей коллекции. Для каждой записи мы собираемся определить фрагмент кода, описывающий, что делать при доступе к каждой записи.
- Наконец, мы видим, что если возвращаемая запись не равна нулю, то мы берем сотрудника с помощью команды «item.Employeeid». Остальная часть кода предназначена только для создания правильного HTML-кода, который позволит нашим результатам правильно отображаться в браузере.
Шаг 3) На этом этапе мы собираемся отправить наш вывод на веб-страницу и заставить наше приложение прослушивать определенный порт.
Пояснение к коду:
- Здесь мы отправляем весь контент, созданный на предыдущем этапе, на нашу веб-страницу. Параметр «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() {});
Примечание: курсор.each может быть устарел в зависимости от версии вашего MongoDB Водитель. Вы можете добавить //noinspection JSDeprecatedSymbols перед курсором.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 драйвер и соответствующим образом отображать данные пользователю на веб-странице.