Как использовать виртуальные свойства в Mongoose?

Пользователь

от stephon , в категории: JavaScript , 2 года назад

Как использовать виртуальные свойства в Mongoose?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dorothea_stoltenberg , 2 года назад

@stephon 

Пользователь

от velma , 8 месяцев назад

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