I have the following Mongo DB document structure:
{
_id: channelId,
title: channelTitle,
pubDate: channelPubdate,
items:
[
{
title: newsTitle,
desc: newsDescription,
link: newsLink,
pubDate: Date,
clicks: 0
},
{/*One more*/},
{/*...*/}
]
}
我遇到了在集合中递增“点击”字段的问题(更新嵌入在数组中的文档的字段)。
我尝试在事件处理程序(客户端)中使用以下代码:
News.update({ _id : Session.get("channelId"), "items.link" : this.link },
{ $inc: { "items.clicks": 1 } }
);
但是它会出现一个错误:
未捕获的错误:不允许。不受信任的代码只能通过ID更新文档。[403]
然后我尝试通过服务器方法:Meteor.methods({
incClicks: function(id, news)
{
News.update({ _id : id, "items.link" : news.link },
{ $inc : { "items.clicks": 1 } }
);
}
});
又出现了一个异常:Exception while invoking method 'incClicks' MongoError: can't append to array using string field name: clicks
针对这个操作,正确的Mongo请求应该是什么?
items
是一个数组。它可能包含多个项目 - 每个项目都有自己的clicks
计数。你想增加哪一个? - David Weldon