Раздел помощи SpaceWeb

Как подключить Node.js к базе данных MongoDB

08 ноя, 2023

Node.js - это платформа для выполнения JavaScript-кода на сервере, а MongoDB - это популярная NoSQL база данных. Использованные вместе Node.js и mongodb — мощный инструментарий для разработки веб-приложений. 

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

Прежде чем начать, убедитесь, что у вас установлены Node.js и MongoDB. Вы можете загрузить Node.js с официального сайта и MongoDB с официального сайта MongoDB.

Установка

Для установки MongoDB для использования с Node.js, вам необходимо выполнить несколько шагов:

Шаг 1: Установка MongoDB

  1. Перейдите на официальный сайт MongoDB и загрузите версию MongoDB Community Server, соответствующую вашей операционной системе (Windows, macOS, Linux).
  2. Установите MongoDB, следуя инструкциям, предназначенным для вашей операционной системы. Например, на Windows вы можете использовать инсталлятор, а на Linux — установить через пакетный менеджер.
  3. Запустите MongoDB. На большинстве систем это можно сделать с помощью команды mongod. Вы должны убедиться, что сервер MongoDB запущен.

Шаг 2: Установка драйвера MongoDB для Node.js

Для того чтобы взаимодействовать с MongoDB из Node.js, вам потребуется официальный драйвер MongoDB для Node.js. Вы можете установить его, используя npm, популярный менеджер пакетов Node.js. Выполните следующую команду в командной строке:

Эта команда загрузит и установит драйвер MongoDB для Node.js и добавит его в зависимости вашего проекта.

Шаг 3: Создание Node.js проекта

Создайте новую папку для вашего проекта и перейдите в нее через командную строку. Затем выполните npm init для создания файла package.json, который будет содержать информацию о вашем проекте и его зависимостях. Вы можете принимать значения по умолчанию, нажимая Enter, или ввести свои данные.

Шаг 4: Использование MongoDB в Node.js

Теперь, когда MongoDB установлен и у вас есть драйвер для Node.js, вы можете начать использовать его в своем Node.js приложении. Вам нужно создать подключение к MongoDB с использованием драйвера.
После этого ваш Node.js сможет взаимодействовать с базой данных MongoDB. Вы можете выполнять операции чтения, записи и обновления данных в вашей базе данных, используя API, предоставленный драйвером MongoDB для Node.js.

Создание нового пользователя в вашей БД

Первым шагом подключитесь к MongoDB с административными правами. Для этого вы можете использовать команду mongo или клиентское приложение MongoDB.
Создайте нового пользователя, используя команду db.createUser() и предоставив имя пользователя и пароль вместе с ролями и правами доступа. 

Например, так:

  • myuser - это имя пользователя, 
  • mypassword - пароль, 
  • readWrite - роль, которая предоставляет права на чтение и запись данных,
  • mydatabase - база данных, к которой применяется данная роль.

Вы можете настроить роли и права пользователя в соответствии с требованиями вашего приложения.
После создания пользователя вы можете выйти из командной оболочки MongoDB используя команду quit () 

Теперь у вас есть новый пользователь MongoDB, который имеет доступ к указанным базам данных и с определенными правами. Учтите, что для создания пользователя с административными правами, необходимо иметь правильные разрешения на сервере MongoDB.

Основным объектов для взаимодействия с базой данных MongoDB является объект класса Mongo Client. Поэтому необходимо импортировать этот класс с помощью команды require и подавать на вход конструктору класса URL, где будет информация о пользователе, IP и порт сервера.

Облегчить взаимодействие между вашими приложениями на Node.js и базой данных MongoDB поможет Mongoose. Mongoose - это библиотека ODM (Object-Document Mapping) для Node.js. Она предоставляет в ваше распоряжение удобный и интуитивно понятный способ моделирования данных и выполнения запросов к MongoDB из вашего приложения.

Таким образом код приложения будет организован в соответствии с архитектурным шаблоном модель-представление-контроллер (MVC). Его прелесть в том, что он отделяет логику обработки входных данных от структурирования и представления на выходе. 

Вам будут интересны следующие функции mongoose для nodejs, интегрированного с MongoDB:

  1. Моделирование данных: Mongoose позволяет вам определить схемы (schemas) для данных, которые вы хотите хранить в MongoDB. Схемы описывают структуру данных, типы полей, валидацию и многое другое. Это означает, что вы сможете легко и консистентно определять данные, которые будут храниться в базе данных. Пример создания модели с использованием Mongoose: 

  1. Установка и поддержание соединения с базой данных: Mongoose позволяет вам установить соединение с MongoDB и автоматически поддерживать это соединение в вашем приложении. Вы можете задать URL-адрес базы данных и опции подключения при настройке Mongoose.

  1. Выполнение запросов к базе данных: Mongoose предоставляет API для выполнения различных операций с базой данных, таких как поиск и вставка. 
  2. Обновление и удаление документов. Он позволяет использовать цепочку методов для построения запросов и облегчает выполнение операций с данными.

Пример выполнения запроса с использованием Mongoose: 

  1. Валидация данных: Mongoose предоставляет встроенную валидацию данных, которая позволяет определить правила валидации для полей в схеме. Это обеспечивает целостность данных в базе. 

Как видите, в интеграции приложения Node.js с MongoDB Mongoose занимает важное место, поэтому советуем подробнее изучить функционал и возможности этой библиотеки.

Организация

В базе данных MongoDB вы будете хранить данные, организованные в определенном порядке. 

Создание "Организации" зависит от того, как вы определяете структуру и хранение данных. MongoDB является базой данных NoSQL, которая не требует строгой схемы, что позволяет гибко определять данные. 

"Организация" может представлять собой коллекцию, документ или поддокумент в вашей базе данных в зависимости от ваших целей. 

Вот примеры того, как вы можете создать "Организацию" в MongoDB:

Пример: Организация как отдельная коллекция

В этом случае, "Организация" представляется как отдельная коллекция в базе данных MongoDB. Вы можете создать новую коллекцию, например, organizations, и вставлять документы, представляющие разные организации, в эту коллекцию.
 

// Подключение к базе данных MongoDB
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mydatabase', {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

// Определение схемы для "Организации"
const organizationSchema = new mongoose.Schema({
  name: String,
  description: String,
  // Другие поля, представляющие "Организацию"
});

// Создание модели для "Организации"
const Organization = mongoose.model('Organization', organizationSchema);

Теперь мы готовы создать новую организацию. 
Давайте сделаем это!

// Создание новой организации
const newOrganization = new Organization({
  name: 'My Company',
  description: 'A sample organization'
});

// Сохранение организации в базе данных
newOrganization.save((err, savedOrg) => {
  if (err) {
    console.error(err);
  } else {
    console.log('Организация успешно создана:', savedOrg);
  }
});

Мы добавили метод console.log  для вывода записей на консоль. При написании скриптов бывает очень удобно посмотреть промежуточный результат непосредственно в консоли вашего браузера. Разумеется, это опциональное дополнение вашего кода, полезный лайфхак для вашего удобства. 

Кстати, про удобство. 
Для администрирования СУБД мы рекомендуем пользоваться оболочкой MongoDB Compass. Это официальный графический клиент, совместимый с OS Linux, Mac и Windows. Он предоставляет возможности не только для добавления, удаления и просмотра баз данных, но и анализ закономерностей, или визуализацию геопространственных данных. 

Подключение Node.js к базе данных MongoDB позволяет вам разрабатывать масштабируемые и гибкие приложения. Вы можете выполнять различные операции с данными, включая чтение, запись и обновление. Даже если перед вами стоит маленькая задача, попробуйте использовать для ее реализации возможности MongoDB и Node.js, и сможете перенести свой навык на создание мощных веб-приложений.