@stephon
В Mongoose виртуальные свойства позволяют определять дополнительные поля, которые не хранятся непосредственно в базе данных, но вычисляются на лету при каждом обращении к модели. Это полезно, когда нужно представить данные в специфическом формате или добавить вычисляемые значения.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
firstName: String,
lastName: String
});
// Определение виртуального свойства fullName, которое объединяет firstName и lastName
userSchema.virtual('fullName').get(function() {
return this.firstName + ' ' + this.lastName;
});
const User = mongoose.model('User', userSchema);
// Использование виртуального свойства fullName
User.findOne({ firstName: 'John', lastName: 'Doe' })
.then(user => {
console.log(user.fullName); // "John Doe"
})
.catch(error => {
console.error(error);
});
|
В приведенном примере у нас есть схема пользователя с полями firstName и lastName. Мы определяем виртуальное свойство fullName, которое возвращает полное имя пользователя путем объединения значений firstName и lastName. При обращении к этому виртуальному свойству, оно будет вычисляться на лету.
Таким образом, вы можете использовать виртуальные свойства в Mongoose для удобного представления данных или добавления дополнительной логики при работе с моделями.