我知道这是一个简单的问题,但我正在尝试解决如何从 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;
}
});
为什么会这样循环?