繁体   English   中英

查询名字,姓氏为全名

[英]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聚合运算符获取firstNamelastName作为fullName

chatUsersModel.aggregate([{
  '$project' : {  
    'fullName' : {'$concat' : [ '$firstName', ' ' ,'$lastName' ]}
  }
}]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM