Во время разработки приложений на Node.js может возникнуть необходимость в хранении данных. Использовать в качестве хранилищ данных переменные приложения или файлы на хосте не всегда удобно. В этих случаях лучше рассмотреть вариант с подключением к приложению внешней базы данных.
Для интеграции с Node.js отлично подходит MongoDB. В этой СУБД данные представлены в JSON-формате, с которым удобно работать на JavaScript. В этом материале мы расскажем, как подключить базу данных MongoDB к своему приложению Node.js, и рассмотрим несколько распространенных запросов к БД.
Эта инструкция подойдет для Node.js версии 14 и выше и MongoDB версии 4.4 и выше.
Тестовая база данных
В качестве тестовой базы данных мы будем использовать базу testdb, в которой находится коллекция employees. В ней хранится информация о сотрудниках абстрактного предприятия: отдел работы, дата рождения, уровень заработной платы и тому подобная информация. Приложение Node.js будем подключать именно к этой базе данных, а работать будем с коллекцией employees.
Создание пользователя в MongoDB Compass
Создадим отдельного пользователя, под которым будем подключаться к базе данных. Присвоим этому пользователю роль администратора всех баз данных. В продакшене так делать не стоит — это негативно скажется на безопасности.
Откройте терминал MongoDB Shell и выполните следующий запрос:
Вывод :
Пользователь с логином «Timeweb» и паролем «cloud» будет использоваться для подключения к БД.
Настройка среды выполнения
Для подключения приложения Node.js к базе данных MongoDB необходимо установить дополнительный пакет mongodb:
DBaaS
оптимизируйте процессы DevOps и CI/CD.
Подключение
Основным объектом, через который мы будем осуществлять взаимодействие с базой данных MongoDB, является объект класса MongoClient. Импортируем этот класс:
И объявляем объект DBclient с помощью конструктора:
На вход конструктору класса подаётся URI, который содержит в себе информацию о пользователе, IP и порте сервера. Вот структура URI:
В случае с размещенной на локальном устройстве БД, URI имеет следующий вид:
- Timeweb — имя пользователя;
- cloud — пароль;
- 27017 — порт;
- DEFAULT — механизм авторизации.
Осуществим подключение к серверу с БД:
Вывод:
Любые взаимодействия с базой данных — это асинхронные операции. Поэтому вместе с ними необходимо использовать async и await. Рассмотрим несколько популярных операций.
Вставка новых документов
Вставка новых документов осуществляется выполнением запроса к БД с данными о документах в качестве аргумента.
Вставка одного документа
Вставка нескольких документов
Проверим общее количество документов в коллекции после вставок:
Вывод:
Вывод документов
Для обращения к документам базы данных и самой базе данных используется такая конструкция:
Где:
- MongoClienObject — объект класса MongoClient;
- dbname — имя базы данных, к которой обращаемся;
- collectionname — имя коллекции, к которой обращаемся;
- operation — запрос к БД или коллекции, например, findOne;
Если запрос осуществляется непосредственно к БД, то collection('collectionname') не указываем.
Выведем все документы в коллекции employees:
Вывод:
Обновление документов
Обновление документов выполняется аналогично предыдущим операциям. Выполним сначала обновление одного документа, а затем обновление нескольких.
Обновление одного документа
Вот результат до и после. С помощью этого скрипта мы изменили имя в документе.
Обновление нескольких документов
Вот результат работы:
Разверните MongoDB в облаке за пару минут
447 ₽/мес
711 ₽/мес
Заключение
MongoDB — это отличный инструмент, особенно в связке с Node.js. В этом материале мы использовали локальную базу данных, но можно использовать и другие варианты размещения БД. Например, в облаке. В Timeweb Cloud можно арендовать облачную базу данных MongoDB и начать работать в кратчайшие сроки.
