【问题标题】:How update an array, client side如何更新数组,客户端
【发布时间】:2015-03-21 05:02:30
【问题描述】:

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

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

但我收到了这个错误

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

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

【问题讨论】:

    标签: meteor minimongo


    【解决方案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});

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

    【讨论】:

    • 谢谢,我的数组不是很大,我认为这对我来说是一个很好的解决方案:)
    【解决方案2】:

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

    【讨论】:

    • 好的,但是如何更新,只有一个 _id 并且没有数组键的索引,我必须更新我的数据?我想念什么?所以也许我可以先找到?但没有比这更好的了?
    • 使用选择器{_id:this.parent._id} 而不是{_id:this.parent._id,"cles.cle":this.context.cle}
    • 感谢您的遮阳篷,但我只想更新以下内容:“cles.cle”:this.context.cle 而不是所有关键的“cles.cle”...
    • 对不起,我不明白你的意思。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多