我知道這是一個問題,但我正在努力解決如何更新鐵路由器中路由文檔中的值。我發現了我需要放置這個函數的地方,但是我爲了使它工作需要使用mongo代碼而掙扎。如何從鐵路由器功能更新文檔值
我想增加一個views元素每次點擊一個鏈接,所以已經添加了下面的代碼到路由。
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 ++這個簡單的東西,它在函數內增加了變量,但它永遠不會被推送到數據庫(我猜想沒有任何意外)。
有人可以指出我需要的方向來獲得這個值嗎(這是甚至是這樣做的正確的地方?)。
謝謝。
Peter。
OK,我發現這個鏈接,使得我的這也解釋了,你只能INC數值(我有這個,因爲它似乎是一個字符串。
功能現在看起來
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;
}
});
爲什麼會變成這樣循環?
OK,改變了代碼以符合你有什麼在這裏,並在控制檯中拋出的異常是 「異常而模擬調用‘/ projectDocs /更新’ 誤差的影響:不能適用$ INC修改非數 \t ... r(「不能將$ inc修飾符應用於非數字」);「 後面跟着一大堆代碼。 –
視圖字段必須是一個數字是所有的例外說的。修復這個問題,更新應該可以工作。 – landland