使用动态字段名称更新包含特定值的数组中的对象

时间:2017-11-29 09:02:37

标签: javascript mongodb meteor

目前,我有一个包含如下对象的Mongo Collection:

{
    "_id" : "5a1d3298dece873bfd6cf593",
    "rights" : [
        ...
        {
            "module" : "messenger",
            "right" : "writeToResident",
            "default" : true
        }, 
        {
            "module" : "messenger",
            "right" : "writeToUnionCouncil",
            "default" : true
        },
        {
            "module" : "news",
            "right" : "see",
            "default" : true
        },
        ...
    ]
}

我只是想做一些简单的事情:编辑default数组中对象的rights值,该数组包含module的值“messenger”和{{1}的“writeToResident” }}

我尝试过很多像

这样的事情

right

但它不起作用。甚至可以这样做吗?

修改

在你的帮助下我尝试了这个:

const setter = {};
setter[`rights.$.${module}.${right}`] = value;
DefaultRoles.update(defaultRoleId, {
	$set: setter
});

// OR

const setter = {};
setter[`rights.${module}.${right}`] = value;
DefaultRoles.update(defaultRoleId, {
	$set: setter
});

但是发生了一件非常奇怪的事:有时编辑的对象不正确。 例如,当我更新DefaultRoles.update({ "_id": defaultRoleId, "rights.module": module, "rights.right": right }, { $set: { 'rights.$.default': value, } }); module: "manual"时,会更新right: "write" module: "actuality"

0 个答案:

没有答案