Meteor 如何在属于外部文档的数组中更新文档?
我有以下文件:Meteor 如何在属于外部文档的数组中更新文档?,meteor,minimongo,Meteor,Minimongo,我有以下文件: mainDoc = { owner: Meteor.userId(), createdOn: new Date(), active: false, label: "Dashboard #" + ($("ul#u-nav-tabs").find("li.u-tab").length + 1), monitors: [/*Embedded documents*/], sharewith:
mainDoc = {
owner: Meteor.userId(),
createdOn: new Date(),
active: false,
label: "Dashboard #" + ($("ul#u-nav-tabs").find("li.u-tab").length + 1),
monitors: [/*Embedded documents*/],
sharewith: []
};
mainDoc.monitors
是以下文档的数组:
innerDoc = {
_id: id._str,
owner: Meteor.userId(),
createdOn: new Date(),
label: monitorLabel,
metadata: {custDate: {}},
style: {
top: mystyle.top,
left: mystyle.left,
width: 0,
height: 0
},
shown: true,
sharewith: []
}
我已在服务器上设置了以下权限
userDashboards.allow({
insert: function (userId) {
"use strict";
return userId;
},
update: function (userId, doc) {
"use strict";
return doc.owner === userId;
},
remove: function (userId, doc) {
"use strict";
return doc.owner === userId;
},
fetch: ["owner", "monitors"]
});
到目前为止,我在客户身上尝试过:
console.log(userDashboards.findOne({"monitors._id": "5f94f2a15bddd908f2bc9d5d"}));
但我只得到完整的文档,而不是嵌入的文档
所以问题是,如何直接从浏览器更新innerDoc.style
?试试这个
更新
userDashboards.update({_id:"5f94f2a15bddd908f2bc9d5d"},{$set:{'monitors[0]._id':"yeaaa look mom im editing documents with arrays"}})
假设“5F94F2A15BDD908F2BC9D5D”是它的。\u id
不是监视器。\u id.
就像你说的监视器是一个数组,所以你应该指定索引aka[0]。
记住,更新的语法应该是这样的
Collection.update({_id:idDocument},{$set:{fieldToUpdate:newData}}) // correct
Collection.update({_id:idDocument,$set:{fieldToUpdate:newData}}) // wrong, you will get some "stack error"
Collection.update({$set:{fieldToUpdate:newData}}) // wrong, you need to specify what document will be update and by stric the id should be always {_id:"5f94f2a15bddd908f2bc9d5d"} <-- like this
Collection.update({u id:idDocument},{$set:{fieldToUpdate:newData}})//正确
update({{u id:idDocument,$set:{fieldToUpdate:newData}}})//错误,您将得到一些“堆栈错误”
Collection.update({$set:{fieldToUpdate:newData}}})//错误,您需要指定要更新的文档,并且通过stric,id应始终为{{u id:“5F94F2A15BDD908F2BC9D5D”}嘿@Ethaan!我还是有点问题,我在[here][1]中找到了部分解决方案,但现在我在如何允许更新该集合方面遇到了问题:-(我得到此错误:未捕获错误:不允许。不受信任的代码只能通过ID更新文档。[403][1]当前位置它帮助了我,我有另一个问题,我用你的solution@juanp_1982,我对答案进行了修改和更新,只是为了让它更清楚