这是我的架构:
{
_id: "FJwSEMdDriddXLKXh"
name: "t"
number: "5"
owners: [
{
_id: 1,
name: "Name",
address: "Address",
type: "Type",
gender: "Gender",
notes: []
}
]
}
然后点击我会在所有者嵌套的notes数组中添加字段。 这是我的Meteor模板事件:
Template.owners.event({
'click #addNoteToOwner' : function(event, template){
event.preventDefault();
Territories.update({_id: template.data._id, owners: this._id}, {$push : {'owners.$.notes': {title:"First Title"}}})
}
})
如果我尝试更新文档,则会出现以下控制台错误:
Uncaught Error: Not permitted. Untrusted code may only update documents by ID. [403]
我的语法是否正确?如何更新此嵌套数组?
谢谢!
答案 0 :(得分:3)
owners
字段中的查询存在错误:
Territories.update({
_id: template.data._id,
owners: {
$elemMatch: {
_id: this._id
}
},
{
$push: {
'owners.$.notes': {
title: "First Title"
}
}
})
您将无法直接从客户端进行更新,因为您使用owners
字段且仅允许_id
。要解决此问题,您可以使用Meteor.methods
进行更新,并从客户端调用该方法。