Meteor mongo:不受信任的代码只能按ID更新文档.[403]

Pue*_*gel 2 mongodb meteor

以下代码段给出了错误:

Households.update({
    _id: Meteor.user().profile.myHousehold, 
    "shoppingList.name" : this.name}, 
    {"$set" : {
         "shoppingList.$.checked" : checked
    }
});
Run Code Online (Sandbox Code Playgroud)

WOT?我正在通过id更新.作为一种解决方法,我当然可以简单地替换整个阵列shoppingList,但那将是蛮力.

sbk*_*ing 6

使用具有延迟补偿的复杂更新/删除选择器的正确模式是使用Meteor方法.

共享代码:

Meteor.methods({

  setHouseholdChecked: function(shoppingListName, checked) {

    check(this.userId, String);
    check(shoppingListName, String);
    check(checked, Boolean);

    Households.update({
      _id: Meteor.user().profile.myHousehold, 
      "shoppingList.name" : shoppingListName
    }, {
      $set: {
        "shoppingList.$.checked" : checked
      }
    });

  }

});
Run Code Online (Sandbox Code Playgroud)

客户代码:

Meteor.call('setHouseholdChecked', this.name, checked);
Run Code Online (Sandbox Code Playgroud)