首页 > 解决方案 > 如何通过模式数组中的 id 填充更新的文档

问题描述

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

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

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

我可以填充数据,但我需要使用不同的 API Url 来显示列表。我不要那个 。我知道如果我更改ObjectIdMixed,我可以看到整个对象。但问题是它不会显示更新的数据。所以我按 ObjectId 推动users:[ {type: mongoose.Schema.Types.ObjectId, ref: 'Userr'}]

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

子架构:-

{
    "_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")
                    }
              });             
        }

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

我需要显示子模式的更新对象。这样我就可以在前端使用来列出我想要的任何细节

标签: node.jsmongodbmongoosemongoose-schemamongoose-populate

解决方案


推荐阅读