如何在架构数组中按ID填充更新的文档

时间:2019-06-14 06:30:24

标签: node.js mongodb mongoose mongoose-schema mongoose-populate

我正在尝试学习和实施一些对我来说较新的操作。我有一个子架构详细信息,我将其推入父架构数组中。一切都很好。但是当涉及到前端时,只需担心几件事。

根据某人的建议,我知道我们必须将_id存储到另一个架构中。而且,如果我们更新该_id的详细信息,它将在存储该文件的每个架构文档中得到反映。

现在,我通过父架构登录,我想查看那些数组_id的全部详细信息,因为我需要在前端显示列表。目前,我只能看到ids。我想填充这些ID的整个对象的数组。

我可以填充数据,但是我需要使用其他API网址来显示列表。我不要那个 。我知道如果将ObjectId更改为Mixed,则可以看到整个对象。但是问题在于它不会显示更新的数据。所以我按ObjectId users:[ {type: mongoose.Schema.Types.ObjectId, ref: 'Userr'}]

那么如何在不创建新的路由api的情况下在主模式数组上填充更新的users远程数据?

子架构:-​​

{
    "_id": "5d034653ff1e426fb0e3fca1",
    "firstName": "xyz",
    "lastName": "fg",
    "__v": 0
}

主要架构响应详细信息:-

{
    "admins": {
        "users": [
            "5d034653ff1e426fb0e3fca1" //<========= what i am getting 
        ],
        "email": "1cf1eede89@himail.online",
        "password": "$2a$10$vHyGxX9P.t0/ybKcmIzkc.ZCX18oHaVnvTgJIWA2gTNzJ3TCdXS4a",
    },
    "_id": "5d0339d5b4b28b6ddff06802",
    "companyID": "497399",
    "__v": 0
}

我要显示这样的结果:

{
    "admins": {
        "users": [
            "5d034653ff1e426fb0e3fca1",
            "firstName" : "xyz",
            "lastName" :"fg"
        ],
        "email": "1cf1eede89@himail.online",
        "password": "$2a$10$vHyGxX9P.t0/ybKcmIzkc.ZCX18oHaVnvTgJIWA2gTNzJ3TCdXS4a",
    },
    "_id": "5d0339d5b4b28b6ddff06802",
    "companyID": "497399",
    "__v": 0
}

注册用户的功能:-

if(req.userData.role2 === 'admin') {
            console.log("saving successful");
            res.send(doc);
            Admin.findOneAndUpdate({ _id: req.userData.userId }, { $push: { 'admins.users': userr._id } }, { new: true })
            .populate('admins.users')
            .exec(function(error, res){
                    if (error) {
                    console.log(error);
                    }else {
                    console.log(res.admins.users+ "populated")
                    }
              });             
        }

这向我显示了填充数据列表,但如何在数组对象中显示它

我需要显示子架构的更新对象。这样我就可以在前端列出我想要的任何细节

0 个答案:

没有答案