我正在使用node express。我正在尝试填充从另一个字段填充的字段。但我遇到问题所以我试图从另一个查询中获取值,然后将其设置为我发送的对象。
api.get('/:id', authenticate, (req, res) => {
let query = MobileTranscation.findById(req.params.id)
.populate('sender')
.populate('created_by');
query.exec((err, datas) => {
if(datas.sender && datas.sender.parent) {
User.findById(datas.sender.parent, (err, user) => {
datas['parentName'] = user.username;
console.log(datas);
res.json(datas);
});
} else {
res.json(datas);
}
});
});
在这里,我想从MobileTranscation.sender获取用户名,其中发件人的父属性具有username属性。我试图填充发件人然后获取父ID并搜索用户并获取用户名。我面临的问题是,如果我记录datas.parentName,我可以看到我得到了用户名,但是当我发送数据时,没有parentName属性。我在这里做错了什么?
是否有可能填充一个属性然后填充其中一个人口填充的属性?
答案 0 :(得分:0)
每当你执行findById时,mongoose实际上会发送某种不可变对象作为回报。因此,您无法向对象添加额外的键。你实际上可以使用.lean函数。像query.lean().exec((err, data) => { /** Function body* */ })
一样。现在,您可以添加所需的额外密钥。