我正在尝试将名字和姓氏作为全名,因为我在模型中设置
"chatBotId": String,
"firstName":String,
"lastName":String,
"contactId" : String,
"type" : String,
"userId":String,
"BotResponseBlocked": Boolean
}
);
chatUserSchema.virtual('fullName').get(function(){
return this.firstName+' '+ this.lastName;
})
但是我的查询没有返回全名。
chatUsersModel.find({chatBotId:chatBotId},{'_id':0,'userId':1, 'firstName':1, 'lastName':1}).lean().
exec((err,result)=>{
callback(result);
})
最佳答案
使用lean()函数意味着你的查询结果将只是JavaScript对象,没有任何 Mongoose 的东西。
这意味着您将无法获得虚拟资源。
您可以从查询中删除 lean(),或者您可以使用一个名为 mongoose-lean-virtuals 的插件在精益查询中包含虚拟值:
const mongooseLeanVirtuals = require('mongoose-lean-virtuals')
// ...
chatUserSchema
.virtual('fullName')
.get(function() {
return this.firstName + ' ' + this.lastName
})
// Use plugin after defining virtuals
chatUserSchema
.plugin(mongooseLeanVirtuals)
你可以告诉 lean() 包含这样的虚拟:
chatUsersModel
.find({ ... })
.lean({ virtuals: true })
.exec((err, result) => {
callback(result)
})
现在应该在结果中包含您的虚拟值。
我希望这会有所帮助。
关于node.js - 查询名字、姓氏作为全名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49665786/