Meteor 如何更新阵列,客户端

Meteor 如何更新阵列,客户端,meteor,minimongo,Meteor,Minimongo,我尝试通过执行以下操作来更新集合中的数组 Configs.update({_id:this.parent._id, "cles.cle":this.context.cle}, {$set: {"cles.$.alias": $(e.target).val()}}); 但我犯了这个错误 未捕获错误:不允许。不受信任的代码只能按ID更新文档。[403] 如何更新数组中的数据,客户端(minimongo)?当您调用集合时。在客户端上更新,选择器只能通过其\u id字段指出文档。因此,您必须执行类似于

我尝试通过执行以下操作来更新集合中的数组

Configs.update({_id:this.parent._id, "cles.cle":this.context.cle},
{$set: {"cles.$.alias": $(e.target).val()}});
但我犯了这个错误

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


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

当您调用
集合时。在客户端上更新
,选择器只能通过其
\u id
字段指出文档。因此,您必须执行类似于
collection.update({u id:“您的id”},})
(或者使用可选的
\u id
选择器:
collection.update(“您的id”})
)的操作。

好的,我想我终于理解了您问题的基础。看起来Meteor将选择条件中数组元素的子选择视为试图绕过仅允许单个记录更新的策略。这感觉像流星中的虫子

可能的解决办法:

  • var-cles=Configs.findOne({u-id:this.parent.\u-id}).cles
  • 根据需要修改
    cles
    数组
  • 就地更新整个数组
    Configs.Update({u id:this.parent.{u id},{$set:{cles:cles});

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

    好的,但是如何更新,只有一个_id,并且没有数组键的索引,我必须在其中更新数据?我错过了一些东西?因此,也许我可以在之前进行查找?但没有更好的方法?使用选择器
    {{u-id:this.parent.{u-id}
    而不是
    {u-id:this.parent.\u-id,“cle.cle”:this.context.cle}
    。感谢您的awnser,但我只想更新这个:“cle.cle”:this.context.cle,而不是所有键“cle.cle”…对不起,我不明白您的意思。谢谢,我的数组不是很大,我认为这是一个很好的解决方案:)