button点击MongoDB更新

在我看来,我正在将用户从“/ dashboard”指向“/ upvote”

在我的路线,我有:

app.get('/upvote', function(req, res) { user = req.user user.score += 1; user.save(); res.redirect('/dashboard'); }); 

这只是一个例子,试图掌握如何在后期阶段将其用于不同的目的。

如何正确地更新我的用户'分数'属性增加每次有GET命令'/ upvote /'?

你需要在你的请求中find给定的用户; req.user只是一个对象而不是一个mongoose模型。 如果你有文件的ID,你可以使用findById。 如果你不这样做,你需要在另一个字段上使用find查询。

 // Users is the mongoose model Users.findById(id, function (err, user) { if (err) return handleError(err); user.score += 1; user.save(function(err) { if (err) return handleError(err); res.send(user); // Or redirect, basically finish request. }); }); 

其次 – 我不一定会做redirect。 您可以保持在同一页面,只需要刷新用户模型的命令。

如果单独修改并保存user文档,则可能会在并发请求期间丢失投票。

相反,使用update$inc运算符使upvoteprimefaces:

 app.get('/upvote', function(req, res) { User.update({_id: req.user._id}, {$inc: {score: 1}}, function(err, count) { res.redirect('/dashboard'); }); }); 

顺便说一句,你应该考虑使用POST或PUT请求而不是GET,因为GET请求不应该改变数据。