如何更新数组,客户端

How update an array, client side

我尝试通过

更新集合中的数组
Configs.update({_id:this.parent._id, "cles.cle":this.context.cle},
{$set: {"cles.$.alias": $(e.target).val()}});

但是我遇到了这个错误

Uncaught Error: Not permitted. Untrusted code may only update documents by ID. [403]

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

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

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

可能的解决方法:

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

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