Исключить виртуальные поля - PullRequest
0 голосов
/ 25 октября 2018

У меня есть виртуальное поле fullname:

UserSchema.virtual('fullname').get(function() {  
  return this.firstName + ' ' + this.lastName;
});

Иногда мне нужно это поле в моем результате запроса, а иногда нет.Я не понял, как это исключить.Вот что я попробовал (ничего не изменил):

UserModel.findOne({ '_id': userId })
  .select('-fullname')
  .exec(callback);

Должен ли я подойти к этому как-то иначе?

1 Ответ

0 голосов
/ 25 октября 2018

Попробуйте отключить виртуальные файлы в toJSON и toObject и включите их в запрос, который вы хотите.

UserModel.fineOne({ _id: userId })
   .then(doc => console.log(doc.toObject({ virtuals: true }));

Если вы хотите исключить определенные поля, вы можете просто удалить их перед отправкой документа.

UserModel.fineOne({ _id: userId })
   .then(doc => doc.toObject({ virtuals: true }))
   .then(doc => {
     delete doc.mySecretVirtual;
     return doc;
   });
...