Mongoose — это популярная библиотека моделирования объектных данных (ODM) для MongoDB в Node.js. Он обеспечивает простой способ определения схем MongoDB и взаимодействия с ними. Одной из ключевых особенностей Mongoose является возможность создавать собственные методы для объектов схемы. Эти методы позволяют добавлять к моделям пользовательские функции, делая их более мощными и гибкими. В этой статье мы рассмотрим различные методы схемы Mongoose с примерами кода, которые помогут вам использовать весь потенциал Mongoose.
- Методы экземпляра.
Методы экземпляра — это функции, определенные для отдельных документов, созданных на основе схемы. К ним можно получить доступ и выполнить в конкретном документе.
Пример:
const userSchema = new mongoose.Schema({
name: String,
email: String,
});
userSchema.methods.getFullName = function() {
return this.name;
};
const User = mongoose.model('User', userSchema);
const user = new User({ name: 'John Doe', email: 'john@example.com' });
console.log(user.getFullName()); // Output: John Doe
- Статические методы.
Статические методы — это функции, определенные в самой схеме. Их можно вызывать непосредственно в модели и они не привязаны к конкретному документу.
Пример:
userSchema.statics.findByEmail = function(email) {
return this.findOne({ email });
};
const User = mongoose.model('User', userSchema);
User.findByEmail('john@example.com')
.then(user => {
console.log(user);
})
.catch(error => {
console.error(error);
});
- Помощники запросов.
Помощники запросов — это функции, которые расширяют объект запроса Mongoose, предоставляя дополнительные возможности запросов. Их можно использовать для упрощения сложных запросов или добавления собственных фильтров.
Пример:
userSchema.query.byName = function(name) {
return this.where({ name });
};
const User = mongoose.model('User', userSchema);
User.find().byName('John')
.then(users => {
console.log(users);
})
.catch(error => {
console.error(error);
});
- Виртуальные.
Виртуальные — это свойства, которые не сохраняются в базе данных, а вычисляются «на лету» с использованием других свойств документа. Их можно использовать для определения производных значений или связей между документами.
Пример:
userSchema.virtual('fullName').get(function() {
return this.name + ' ' + this.lastName;
});
const User = mongoose.model('User', userSchema);
const user = new User({ name: 'John', lastName: 'Doe' });
console.log(user.fullName); // Output: John Doe
Методы схемы Mongoose предоставляют мощный способ расширения и настройки ваших моделей MongoDB. В этой статье мы рассмотрели различные типы методов схемы, включая методы экземпляра, статические методы, вспомогательные методы запросов и виртуальные методы. Используя эти методы, вы можете улучшить функциональность своих моделей и сделать код более читабельным и удобным в сопровождении. Начните использовать методы схемы Mongoose сегодня и раскройте весь потенциал своих приложений на основе MongoDB.