Как использовать Mongoose в экспресс-приложениях
Интегрируйте свое приложение Node.js с базой данных MongoDB с помощью Mongoose.
Управление данными в базе данных MongoDB может оказаться сложной задачей, особенно при работе со сложными моделями данных. MongoDB — это база данных без схемы, то есть данные можно добавлять, не следуя определенной структуре. Такая гибкость делает MongoDB идеальным местом для хранения больших объемов данных, но также усложняет управление данными.
Mongoose предоставляет решение на основе схемы, которое помогает гарантировать, что данные, сохраненные в MongoDB, согласованы и правильно отформатированы. С помощью Mongoose вы можете определить схему для своих моделей данных, которая определяет структуру данных и правила форматирования этих данных. Здесь вы узнаете, как использовать Mongoose в приложении Express.
Настройка среды разработки
Прежде чем использовать Mongoose, вы должны установить его как зависимость в своем проекте.
Вы можете установить Mongoose, выполнив команду ниже:
npm install mongoose
После установки Mongoose в свой проект вам необходимо подключить ваше приложение к MongoDB с помощью Mongoose.
Mongoose подключается к базе данных MongoDB с помощью connect<, который принимает URI MongoDB в качестве аргумента.
Вот пример:
// index.js
const mongoose = require("mongoose")
mongoose.connect("mongodb://127.0.0.1:27017/example", () =>
console.log("Connected to database successfully")
);
Приведенный выше блок кода подключается к локальному экземпляру MongoDB и регистрирует сообщение об успешном подключении вашего приложения к MongoDB.
Создание модели Мангуста
Модель Mongoose — это класс в Mongoose на основе схемы, который позволяет вам взаимодействовать с коллекцией MongoDB.
Схема Mongoose определяет структуру документов, которые вы можете хранить в коллекции MongoDB, и предоставляет интерфейс для создания, чтения, обновления и удаления документов в этой коллекции.
Когда вы определяете модель Mongoose, вы определяете схему для документов в этой коллекции, включая свойства, их типы и любые проверки.
Вот пример модели Mongoose для коллекции User:
const mongoose = require("mongoose");
const userSchema = mongoose.Schema({
name: {
type: String,
required: [true, "Name is required"],
},
email: {
type: String,
required: true,
},
age: {
type: Number,
validate: {
validator: function (value) {
return value > 0;
},
message: () => "Please enter a valid age",
},
},
});
const User = mongoose.model("User", userSchema);
module.exports = User;
Приведенный выше блок кода определяет схему Mongoose с тремя свойствами: имя, . >электронная почта и возраст. Каждое свойство имеет определенный набор правил, которым необходимо следовать при сопоставлении значения с указанным полем. Вот разбивка правил:
- имя: имя является < Strong>строковый тип помечен как обязательный, что означает, что вы должны сопоставить строку в это поле. Если вы оставите поле пустым или введете другой тип данных JavaScript, Mongoose выдаст ошибку.
- электронная почта. Свойство email представляет собой email. Strong>строковый тип помечены как обязательные. Никаких других правил проверки у него нет, но на практике вам следует проверить правильность адреса электронной почты. Вы можете проверить электронную почту, используя выражения регулярных выражений или сторонние библиотеки, такие как class-validator.
- возраст: возраст Свойство представляет собой число . введите настраиваемое правило проверки, которое проверяет, больше ли значение, сопоставленное с полем, нулю. Если значение не проходит проверку, Mongoose выдает ошибку с сообщением Пожалуйста, введите действительный возраст. Вы можете оставить это поле пустым, поскольку оно не помечено как обязательное.
После определения схемы блок кода создает модель Mongoose под названием User, используя метод mongoose.model(). Этот метод принимает два аргумента: имя модели и схему, используемую для документов.
Наконец, модель Пользователь экспортируется в другие части вашего приложения.
Взаимодействие с MongoDB с использованием Mongoose
Когда ваше приложение подключено к базе данных MongoDB, а ваша модель создана и доступна другим частям вашего приложения, вы можете взаимодействовать со своей базой данных, используя методы, предоставляемые Mongoose.
В этом руководстве вы будете выполнять операции CRUD с базой данных MongoDB.
Примечание. Обязательно импортируйте модель Mongoose в любой модуль, где вы будете выполнять операции CRUD.
Например:
// router.js
const User = require("./userModel")
Создание документа
Документ — это экземпляр модели. Существует несколько способов создания и сохранения документа в MongoDB с помощью Mongoose.
Сначала вы можете создать экземпляр класса вашей модели, а затем вызвать сохранение . метод по этому поводу.
Например:
//Creating a new user
let user = new User({
name,
email,
age,
});
//Saving user to database
user
.save()
.then(() => {
console.log("User created successfully");
})
.catch((error) => {
//handle error
});
Приведенный выше блок кода создает и сохраняет новый документ Пользователь в вашей базе данных MongoDB.
Вы также можете сохранить данные в свою базу данных с помощью команды создать . метод. создавайте создает экземпляр вашей модели и вызывает для нее метод save. Другими словами, он сочетает в себе две операции ранее упомянутой техники.
Например:
User.create({ name, email, age }, (err, data) => {
if (err) throw new Error("Internal Server Error");
console.log(`User created successfully: ${data}`);
});
Приведенный выше блок кода создает новый документ Пользователь со свойствами, передаваемыми в качестве аргумента создать метод.
Кроме того, вы можете сохранить данные в своей базе данных с помощью insertMany<. метод. Хотя этот метод идеален только для пакетного сохранения данных.
Например:
User.insertMany(
[
{ name, email, age },
{ name_1, email_1, age_1 },
],
(err, result) => {
if (err) {
//handle error
} else {
//Send results
}
}
);
Приведенный выше блок кода создает два новых документа в коллекции User, используя массив, переданный в качестве аргумента insertMany метод.
Чтение документа
Вы можете получить доступ ко всем сохраненным документам в вашей базе данных MongoDB, используя метод find Mongoose. .
Например:
User.find({})
.then((data) => {
console.log(data);
})
.catch((err) => {
//handle error
});
Приведенный выше блок кода вернет все документы из коллекции User.
Вы также можете найти все документы, соответствующие определенному запросу, передав запрос методу find.
Например:
// find all documents where age is at least 18
User.find({ age: { $gte: 18 } })
.then((data) => console.log(data))
.catch((error) => console.log(error));
Приведенный выше блок кода вернет все документы со значением возраста больше 18 в Пользователе. коллекция.
Альтернативно вы можете читать отдельные записи, используя findById<. и передать идентификатор документа в качестве аргумента или использовать метод findOne и передача фильтра в качестве аргумента .
Например:
//findById
User.findById(id, (error, result) => {
if (result) console.log(result);
if (error) console.error(error)
});
//findOne
User.findOne({ email: "johnson@example.com" }).then((user) => {
if (!user) {
//handle error
}
//send response
});
В приведенном выше блоке кода findById возвращает документ с соответствующим идентификатором. findOne Метод возвращает первый документ с адресом электронной почты johnson@example.com.
Обновление документа
Вы можете обновить документ в MongoDB с помощью Mongoose, используя метод findByIdAndUpdate. Этот метод принимает идентификатор и объект с обновленными сведениями.
Например:
User.findByIdAndUpdate(id, req.body, (err, doc) => {
if (doc) {
//Send response
}
if (err) {
//handle error
}
});
Приведенный выше блок кода обновляет документ, идентификатор которого соответствует предоставленному идентификатору, с помощью предоставленного объекта обновления (req.body ). ).
Удаление документа
Вы можете удалить документ в MongoDB с помощью Mongoose, используя метод findByIdAndDelete. Этот метод принимает идентификатор в качестве аргумента и удаляет документ с соответствующим идентификатором.
Например:
User.findByIdAndDelete(id, (error, result) => {
if (result) {
//Handle result
}
if (error) {
//Handle error
}
});
Приведенный выше блок кода удаляет документ с указанным идентификатором из вашей базы данных MongoDB.
Использование Mongoose в ваших экспресс-приложениях
В этой статье представлен обзор того, как вы можете использовать Mongoose в своем экспресс-приложении. Описывается, как установить соединение с MongoDB, структурировать и проверить данные, сохраненные в вашей базе данных MongoDB, а также выполнить простые операции CRUD.
Используя Mongoose в своих приложениях Express, вы можете упростить и оптимизировать взаимодействие между вашим приложением и базой данных MongoDB.