@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 для удобного представления данных или добавления дополнительной логики при работе с моделями.