Интегрируйте свое приложение Node.js с базой данных MongoDB с помощью Mongoose.
Управление данными в базе данных MongoDB может быть сложной задачей, особенно при работе со сложными моделями данных. MongoDB — это база данных без схемы, то есть данные можно добавлять без соблюдения определенной структуры. Эта гибкость делает MongoDB идеальной для хранения больших объемов данных, но также усложняет управление данными.
Mongoose предоставляет решение на основе схемы, которое помогает гарантировать, что данные, сохраненные в MongoDB, непротиворечивы и правильно отформатированы. С помощью Mongoose вы можете определить схему для своих моделей данных, которая определяет структуру данных и правила форматирования этих данных. Здесь вы узнаете, как использовать Mongoose в приложении Express.
Настройка среды разработки
Прежде чем использовать Mongoose, вы должны установить его как зависимость в своем проекте.
Вы можете установить Mongoose, выполнив следующую команду:
npm установить мангуста
После того, как вы установите Mongoose в свой проект, вам необходимо подключить ваше приложение к MongoDB с помощью Mongoose.
Mongoose подключается к базе данных MongoDB, используя соединять метод, который принимает MongoDB URI в качестве аргумента.
Вот пример:
// index.js
константа мангуст = требовать("мангуста")мангуст.подключить("монгодб://127.0.0.1:27017/пример", () =>
консоль.бревно("Подключение к базе данных успешно")
);
Приведенный выше блок кода подключается к локальному экземпляру MongoDB и регистрирует сообщение об успешном выполнении, когда ваше приложение успешно подключается к MongoDB.
Создание модели мангуста
Модель Mongoose — это основанный на схеме класс в Mongoose, который позволяет вам взаимодействовать с коллекцией MongoDB.
Схема Mongoose определяет структуру документов, которые вы можете хранить в коллекции MongoDB. и предоставляет интерфейс для создания, чтения, обновления и удаления документов в этом коллекция.
Когда вы определяете модель Mongoose, вы определяете схему для документов в этой коллекции, включая свойства, их типы и любые проверки.
Вот пример модели Mongoose для Пользователь коллекция:
константа мангуст = требовать("мангуста");
константа userSchema = мангуст. Схема({
имя: {
тип: Нить,
необходимый: [истинный, "Требуется имя"],
},
электронная почта: {
тип: Нить,
необходимый: истинный,
},
возраст: {
тип: Число,
подтвердить: {
валидатор: функция (ценить) {
возвращаться значение > 0;
},
сообщение: () =>"Пожалуйста, введите действительный возраст",
},
},
});константа Пользователь = мангуст.модель("Пользователь", пользовательская схема);
модуль.экспорт = пользователь;
Блок кода выше определяет схему Mongoose с тремя свойствами: имя, электронная почта, и возраст. Каждое свойство имеет определенный набор правил, которым вы должны следовать при сопоставлении значения с указанным полем. Вот разбивка правил:
- имя: имя собственность - это нить тип помечен как необходимый, что означает, что вы должны сопоставить строку с этим полем. Если вы оставите поле пустым или введете другой Тип данных JavaScript, Мангуст выдает ошибку.
- электронная почта: электронная почта собственность - это нить тип помечен как необходимый. У него нет других правил проверки, но на практике вы должны проверить правильность адреса электронной почты. Вы можете подтвердить электронную почту использование регулярных выражений или сторонние библиотеки, такие как class-validator.
- возраст: возраст собственность - это число тип с пользовательским правилом проверки, которое проверяет, больше ли значение, сопоставленное с полем, нуля. Если значение не проходит проверку, Mongoose выдает ошибку с сообщением Пожалуйста, введите действительный возраст. Вы можете оставить это поле пустым, так как оно не помечено как необходимый.
После определения схемы блок кода создает модель Mongoose с именем Пользователь с использованием мангуст.модель() метод. Этот метод принимает два аргумента: имя модели и схему, используемую для документов.
Наконец, Пользователь модель экспортируется в другие части вашего приложения.
Взаимодействие с MongoDB с помощью Mongoose
Когда ваше приложение подключено к базе данных MongoDB, а ваша модель создана и доступна для других частей вашего приложения, вы можете взаимодействовать с вашей базой данных, используя методы, предоставляемые Mongoose.
Для этого урока вы будете выполнять CRUD-операции в базе данных MongoDB.
Примечание: обязательно импортируйте свою модель Mongoose в любой модуль, где вы будете выполнять операции CRUD.
Например:
// маршрутизатор.js
константа Пользователь = требовать("./Модель пользователя")
Создание документа
Документ является экземпляром модели. Существует несколько способов создать и сохранить документ в MongoDB с помощью Mongoose.
Во-первых, вы можете создать экземпляр класса вашей модели, а затем вызвать сохранять метод на нем.
Например:
//Создание нового пользователя
позволять пользователь = новый Пользователь({
имя,
электронная почта,
возраст,
});
//Сохраняем пользователя в БД
пользователь
.сохранять()
.затем(() => {
консоль.бревно("Пользователь успешно создан");
})
.ловить((ошибка) => {
//обработка ошибки
});
Приведенный выше блок кода создает и сохраняет новый Пользователь документ в базу данных MongoDB.
Вы также можете сохранить данные в базу данных с помощью создавать метод. создавать метод создает экземпляр вашей модели и вызывает метод сохранять метод на нем. Другими словами, он сочетает в себе две операции ранее упомянутой техники.
Например:
User.create({ имя, электронная почта, возраст }, (ошибка, данные) => {
если (ошибка) бросатьновыйОшибка("Внутренняя ошибка сервера");
консоль.бревно(`Пользователь успешно создан: ${данные}`);
});
Блок кода выше создает новый Пользователь документ со свойствами, переданными в качестве аргумента создавать метод.
Кроме того, вы можете сохранить данные в базу данных, используя вставитьмного метод. Хотя этот способ идеален только для пакетного сохранения данных.
Например:
User.insertMany(
[
{имя, адрес электронной почты, возраст},
{имя_1, электронная почта_1, возраст_1},
],
(ошибка, результат) => {
если (ошибка) {
//обработка ошибки
} еще {
//Отправить результаты
}
}
);
Приведенный выше блок кода создает два новых документа в Пользователь коллекция с использованием массива, переданного в качестве аргумента вставитьмного метод.
Чтение документа
Вы можете получить доступ ко всем сохраненным документам в вашей базе данных MongoDB с помощью Mongoose’s находить метод.
Например:
Пользователь.найти({})
.затем((данные) => {
консоль.log (данные);
})
.ловить((ошибаться) => {
//обработка ошибки
});
Приведенный выше блок кода вернет все документы в Пользователь коллекция.
Вы также можете найти все документы, соответствующие определенному запросу, передав запрос методу find.
Например:
// найти все документы, возраст которых не менее 18 лет
Пользователь.найти({ возраст: { $gte: 18 } })
.затем((данные) =>консоль.лог (данные))
.ловить((ошибка) =>консоль.log (ошибка));
Приведенный выше блок кода вернет все документы со значением возраста больше 18 в списке. Пользователь коллекция.
Кроме того, вы можете прочитать отдельные записи, используя найти по идентификатору метода и передачи идентификатора документа в качестве аргумента или использования метода найтиодин метода и передачи фильтра в качестве аргумента.
Например:
//findById
User.findById(id, (ошибка, результат) => {
если (результат) консоль.log (результат);
если (ошибка) консоль.error (ошибка)
});
//findOne
Пользователь.findOne({ электронная почта: "[email protected]" }).затем((пользователь) => {
если (!пользователь) {
//обработка ошибки
}
//отправить ответ
});
В приведенном выше блоке кода найти по идентификатору Метод возвращает документ с совпадающим идентификатором. найтиодин метод возвращает первый документ с электронной почтой [email protected].
Обновление документа
Вы можете обновить документ в MongoDB с помощью Mongoose, используя найтиByIdAndUpdate метод. Этот метод принимает идентификатор и объект с обновленными данными.
Например:
User.findByIdAndUpdate(id, req.body, (err, doc) => {
если (док) {
//Отправить ответ
}
если (ошибка) {
//обработка ошибки
}
});
Приведенный выше блок кода обновляет документ, имеющий идентификатор, соответствующий предоставленному идентификатору, с предоставленным объектом обновления (затреб.тело).
Удаление документа
Вы можете удалить документ в MongoDB с помощью Mongoose, используя findByIdAndDelete метод. Этот метод принимает идентификатор в качестве аргумента и удаляет документ с соответствующим идентификатором.
Например:
User.findByIdAndDelete(id, (ошибка, результат) => {
если (результат) {
//Обработка результата
}
если (ошибка) {
//Обработка ошибки
}
});
Приведенный выше блок кода удаляет документ с заданным идентификатором из вашей базы данных MongoDB.
Использование Mongoose в ваших экспресс-приложениях
В этой статье представлен обзор того, как вы можете использовать Mongoose в своем экспресс-приложении. О том, как вы можете установить соединение с MongoDB, структурировать и проверить данные, сохраненные в вашей базе данных MongoDB, и выполнить простые операции CRUD.
Используя Mongoose в своих приложениях Express, вы можете упростить и оптимизировать взаимодействие между вашим приложением и базой данных MongoDB.