В этой статье мы разберём как происходит работа с MongoDB в Node.js, для всего этого мы будем использовать библиотеку Mongoose, думаю будет интересно.
Также перед этой статьёй рекомендую прочитать «Express.js быстрый старт», это надо, так как мы всё будем делать на базе Express.js.
Установка Mongoose:
Перед тем как показать работу Mongoose с MongoDB, нужно её установить, для этого надо использовать NPM, вот пример:
1 | npm install mongoose --save |
Как видите просто скачали через NPM, теперь можете работать с ним.
Работа с MongoDB в Mongoose:
Для работы вам соответственное нужно сначала подключиться, для этого пишем вот этот код:
1 2 3 4 5 6 7 8 9 10 11 12 | // Подключаем библиотеку mongoose const mongoose = require('mongoose'); // Константа для хранения пути к базе данных const settingConnect = `mongodb://localhost:27017/`; // Подключение к базе данных await mongoose.connect(settingConnect, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false }) |
Важно:
Все функции или методы Mongoose должны использоваться в асинхронной функции с ключевым словом await
.
Как видите в начале мы подключили сам Mongoose, потом создали константу которая хранит путь к подключению БД, и делаем подключение к базе данных, для этого используем mongoose.connect()
, в качестве первого параметра применяет путь, второй это объект дополнительных данных.
После того как подключили, нужно создать модель или схему данных, это такая вещь, которая позволяет определить что и как будет храниться в одном элементе БД.
Вот пример создания:
1 2 3 4 5 6 7 8 9 10 11 12 | Подключаем модули Schema и model const {Schema, model} = require('mongoose'); // Создаём схему элементов поста const Post = new Schema({ title: {type: String, maxlength: 50, required: true}, text: {type: String, required: true}, likes: {type: Number, default: 0} }) // Экспортируем модель поста module.exports = model('Post', Post); |
В начале мы импортируем модули библиотеки mongoose, Schema
и model
, первая нужна для создания схемы элемента, то для обозначение какие данные должны находиться и как. Второй для создания модели, это нам надо, чтобы уже полноценное работать с БД, например, добавлять ил удалять элементы.
После того как всё импортировали, пришло пора создать схему, как видите для этого мы создаём объекта класса Schema
, внутрь передаём обычный объект, со свойствами, которые мы хотим, чтобы были у нашего элемента.
Как опять же видите, каждые свойство, состоит из объекта, главное свойство которого это type
, оно отвечает за тип данных, в него передаём тип данных JavaScript.
Вы можете заметить, что есть два основных, это String
— Строковой и Number
— Числительный, они наверное основные которыми вы будите пользоваться.
Также есть и другие свойства, например maxlength
, оно отвечает за максимальное количество символов, или required
, оно отвечает за проверку, в нашем случае оно везде true
, что значит будет проверка, но ещё вы можете передать функцию, которая будет проверять значение, так как вам надо, ну и default, благодаря ему можно создавать значение по умолчанию, и при создании не надо его указывать. Опять эта только основные свойства.
Последние что мы делаем в этом коде, это экспортируем предварительно превратив нашу схему в модель, для этого используем функцию model()
, в качестве первого параметра используем название файла где будет храниться данные и схему.
Базовые методы:
Последние что стоит разобрать, так это какие методы есть, так как благодаря им и будет происходить работа с MongoDB в Node.js, например узнаете методы для создания или удаление элементов.
Вот список основных:
- Model.save() — Сохраняет элемент;
- Model.find() — Находит несколько подходящих элементов;
- Model.findOne() — Находит один подходящий элемент;
- Model.deleteOne() — Удаляет один элемент;
- Model.updateOne() — Обновляет один элемент;
Давайте кратко рассмотрим как с ними работать, но сначала стоит скачать, что Model
это модель которую мы создали выше из схему.
Теперь можно перейти к не большим примерам работы этих методов, вот save:
1 2 3 4 | const Post = require('./Post'); const post = new Post({title: "Новый пост", text: "Это текст поста"}) await post.save() |
Для сохранения мы сначала импортируем нашу модель, которую создали выше, потом создаём объект используя её, и как видите в качестве параметра мы передаём объект, где задаём параметры которые указывали в схеме, но как видите мы не указали параметр likes
, это всё потому что, мы его задали по умолчанию и теперь на не обязательно указывать.
Созданный объект передали в переменную и потом уже на ней использовали методы save()
, таким образом мы сохранили в БД новый элемент.
Дальше рассмотрим find()
и findOne()
:
1 | const Posts = await Post.find({likes: 10}, '_id title text likes'); |
Здесь мы берём все посты с 10’ю лайками, задаём мы это объектом, также вы можете в него задать например title
, таким образом он найдёт все посты с одинаковым количеством лайков и с одним заголовком.
Следующий атрибут задаёт какие свойства элементов нам нужны, задаётся это виде строке, через пробел.
Точно также и с findOne()
, только он возвращает не несколько элементов, а первый попавшийся.
Следующие разберём метод deleteOne()
, для удаления элементов:
1 | await Post.deleteOne({title: "Привет"}) |
Тут смысл такой же как и с прошлым примером, первый параметр указывает свойства по совпадениям которым нужно удалить элемент один элемент, таких свойств может быть несколько, ещё есть deleteMeny()
, он позволяет удалять несколько элементов, в остальном такой же.
Последние что рассмотрим, это метод updateOne()
:
1 | await Post.updateOne({title: "Старое название поста"}, {title: "Новое название поста"}) |
Как видите сначала мы первым атрибутом объект свойств по которым ищем элемент, второй атрибут это объект с свойствами которые вы хотите изменить и с новыми значениями.
В целом это основное что вам стоит знать.
Вывод:
В этой статье вы узнали как происходит работа с MongoDB в Node.js, с помощью библиотеки Mongoose, думаю вам было интересно, тут вы узнали основное что стоит знать для работы с этим.