排除虚拟字段
Exclude virtual fields
我有一个虚拟字段fullname
:
UserSchema.virtual('fullname').get(function() {
return this.firstName + ' ' + this.lastName;
});
有时我希望在查询结果中包含此字段,有时又不需要。我还没有想出如何排除它。这是我尝试过的(没有改变任何东西):
UserModel.findOne({ '_id': userId })
.select('-fullname')
.exec(callback);
我应该以其他方式解决这个问题吗?
尝试在 toJSON
和 toObject
中禁用虚拟,并将它们包含在您想要的查询中
UserModel.findOne({ _id: userId })
.then(doc => console.log(doc.toObject({ virtuals: true }));
如果您想排除特定字段,您可以在发送文档之前删除它们。
UserModel.findOne({ _id: userId })
.then(doc => doc.toObject({ virtuals: true }))
.then(doc => {
delete doc.mySecretVirtual;
return doc;
});
我有一个虚拟字段fullname
:
UserSchema.virtual('fullname').get(function() {
return this.firstName + ' ' + this.lastName;
});
有时我希望在查询结果中包含此字段,有时又不需要。我还没有想出如何排除它。这是我尝试过的(没有改变任何东西):
UserModel.findOne({ '_id': userId })
.select('-fullname')
.exec(callback);
我应该以其他方式解决这个问题吗?
尝试在 toJSON
和 toObject
中禁用虚拟,并将它们包含在您想要的查询中
UserModel.findOne({ _id: userId })
.then(doc => console.log(doc.toObject({ virtuals: true }));
如果您想排除特定字段,您可以在发送文档之前删除它们。
UserModel.findOne({ _id: userId })
.then(doc => doc.toObject({ virtuals: true }))
.then(doc => {
delete doc.mySecretVirtual;
return doc;
});