我有一个虚拟字段fullname
:
UserSchema.virtual('fullname').get(function() {
return this.firstName + ' ' + this.lastName;
});
有时,我希望在查询结果中使用此字段,有时却不需要。我还没有弄清楚如何排除它。这是我尝试过的(什么都没做):
UserModel.findOne({ '_id': userId })
.select('-fullname')
.exec(callback);
我应该以其他方式处理吗?
答案 0 :(得分:1)
尝试在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;
});