如何更新数组,客户端

时间:2015-03-21 05:02:30

标签: meteor minimongo

我尝试通过

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

但是我收到了这个错误

  

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

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

2 个答案:

答案 0 :(得分:1)

当您在客户端上致电collection.update时,选择器可能仅按其_id字段指出文档。因此,您必须执行类似collection.update({_id: "your id"}, <updates>})的操作(或使用备用_id选择器:collection.update("your id", <updates>}))。

答案 1 :(得分:1)

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

可能的解决方法:

  1. var cles = Configs.findOne({_id:this.parent._id}).cles;
  2. 根据需要修改cles数组
  3. 更新整个数组到位Configs.update({_id:this.parent._id},{$set: {cles: cles});
  4. 感觉笨拙。另一种解决方案是创建一个服务器方法来在服务器端执行此操作。如果您的数组可能很大,那会更好。