[英]Query firstname, lastname as fullname
我正在尝试获取名字和姓氏作为全名,为此我正在模型中进行设置
"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对象,而没有猫鼬的东西。
这意味着您不会获得虚拟机。
您可以从查询中删除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)
})
现在,您的结果中应包括虚拟对象。
我希望这有帮助。
您可以使用$concat
聚合运算符获取firstName
和lastName
作为fullName
chatUsersModel.aggregate([{
'$project' : {
'fullName' : {'$concat' : [ '$firstName', ' ' ,'$lastName' ]}
}
}]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.