1

我试图通过这样做来更新集合中的数组

Configs.update({_id:this.parent._id, "cles.cle":this.context.cle},
{$set: {"cles.$.alias": $(e.target).val()}});

但我收到了这个错误

未捕获的错误:不允许。不受信任的代码只能按 ID 更新文档。[403]

如何更新数组中的数据,客户端(minimongo)?

4

2 回答 2

1

好的,我想我终于明白你的问题的基础了。看起来 Meteor 将您在选择标准中对数组元素的子选择视为试图规避仅允许单个记录更新的策略。这感觉就像 Meteor 中的一个错误。

一种可能的解决方法:

  1. var cles = Configs.findOne({_id:this.parent._id}).cles;
  2. 根据需要修改cles数组
  3. 就地更新整个数组Configs.update({_id:this.parent._id},{$set: {cles: cles});

感觉很笨拙。另一种解决方案是创建一个服务器方法来在服务器端执行此操作。如果您的阵列可以很大,这会更好。

于 2015-03-24T18:31:32.223 回答
1

当您调用客户端时,选择器可能仅按其字段collection.update指出文档。_id所以你必须做类似的事情collection.update({_id: "your id"}, <updates>})(或使用替代_id选择器:)collection.update("your id", <updates>})

于 2015-03-21T08:10:36.757 回答