【发布时间】:2013-11-28 00:53:36
【问题描述】:
我知道这是一个简单的问题,但我正在尝试解决如何从 Iron 路由器中的路由更新文档中的值。我找到了需要放置该函数的位置,但我正在努力使用使其工作所需的 mongo 代码。
我试图在每次单击链接时增加一个视图元素,因此已将以下代码添加到路由中。
data: function () {
var project = projectDocs.findOne(this.params._id);
// need to increment views value by one
console.log(project.views);
projectDocs.update({id: project.id},
{$inc: {views: 1}}
);
console.log(project.views);
return project;
}
});
project.views 值正在返回正确的值,但更新该值的代码此时会引发异常。
我尝试了简单的 project.views++,它在函数中增加变量,但它永远不会被推送到数据库(我猜这并不奇怪)。
有人能指出我需要将这个值设置为 inc 的方向吗(这甚至是正确的地方吗?)。
谢谢。
彼得。
好的,我发现这个链接让我了解了http://books.google.com.au/books?id=uGUKiNkKRJ0C&pg=PA37&lpg=PA37&dq=Cannot+apply+$inc+modifier+to+non-number&source=bl&ots=h7qyOddRsf&sig=EWFw9kNLGHoFEUS-nTNsBStDRcQ&hl=en&sa=X&ei=cRGXUse0DNGciAfk6YHgCA&ved=0CFcQ6AEwBQ#v=onepage&q=Cannot%20apply%20%24inc%20modifier%20to%20non-number&f=false 的一部分,它解释了你只能添加数字值(我似乎把它当作一个字符串。
现在的问题是我似乎陷入了无限循环。
函数现在看起来像
this.route('projectPage', {
path: '/projects/:_id',
waitOn: function() {
return Meteor.subscribe('singleProject', this.params._id);
},
data: function () {
var project = projectDocs.findOne(this.params._id);
// need to increment views value by one
console.log("Views", project.views);
console.log("Project", project);
projectDocs.update(project._id,
{$inc: {views: 1}}
);
console.log(project.views);
return project;
}
});
为什么会这样循环?
【问题讨论】:
标签: mongodb meteor iron-router