点击按钮后MongoDB更新

时间:2015-11-10 22:14:37

标签: javascript node.js mongodb mongoose

在我看来,我将用户从'/ dashboard'指向'/ upvote'

在我的路线中,我有:

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

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

如果每次有'/ upvote /'的GET命令,我如何正确更新我的用户'得分'属性?

2 个答案:

答案 0 :(得分:1)

您需要在请求中找到给定的用户; req.user只是一个对象而不是猫鼬模型。如果您有文档的ID,则可以使用findById。如果您不想在其他字段上使用查询查询。

// 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.
  });
});

其次 - 我不一定要做重定向。您可以保持在同一页面上,只需让命令刷新用户模型。

答案 1 :(得分:1)

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

相反,使用update$inc运算符来使upvote原子化:

user
顺便说一下,您应该考虑使用POST或PUT请求而不是GET,因为GET请求不应该更改数据。