在query.exec()之后将属性设置为对象



我正在使用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中获取用户名,其中发件人具有具有用户名属性的父属性。我试图填充发件人,然后将父级ID和搜索用户搜索并获取用户名。我遇到的问题是,如果我登录数据。我在这里做错了什么?

是否可以填充属性,然后填充一个人口稠密的属性?

每当您进行FindbyId Mongoose时,实际上都会发送某种不变的对象以返回。因此,您不能向对象添加额外的密钥。您实际上可以使用.lean函数。像query.lean().exec((err, data) => { /** Function body* */ })。现在您可以添加想要的额外密钥。

最新更新