首页 > 解决方案 > 有没有办法可以根据用户活动(如评论)增加模型中的值?

问题描述

每次他/她在博客上发表评论时,我都会尝试增加用户当前的收入值。我正在用 Node 和 Express 为后端和 MongoDB 为数据库编写一个加密程序。我希望能够根据用户在平台上发表的评论增加用户赚取的金额(当前)。

我尝试向用户模型添加“收入”字段,并将其设置为数字,因为这正是我真正需要的。然后我写了几行代码来增加用户在应用程序(博客)中任何地方发表评论时的当前数量,但它似乎不起作用。相反,它返回相同的数字,即 20。我将其设置为每条评论添加 20,但它始终返回 20 而不是 20、40、60 ...我的代码如下

    // my model
    var userSchema = new mongoose.Schema({
        username: String,
        firstName: String,
        lastName: String,
        earnings: 0,
        email: String,
        password: String
    })


    // my routes
router.post('/', middleware.isLoggedIn, (req, res) => {
    // find blog using ID
    Blog.findById(req.params.id, (err, blog) => {
        if(err) {
            console.log('Error:', err);
            res.redirect('/blogs');
        } else {
            Comment.create(req.body.comment, (err, comment) => {
                if(err) {
                    req.flash('error', 'Something went wrong');
                    console.log('Error:', err);
                } else {
                    // add id
                    comment.author.id = req.user._id;
                    comment.author.username = req.user.username;
                    var total = Number(req.user.earnings);
                    // save comment
                    comment.save();
                    User.earnings = total;
                    User.earnings += 20;
                    blog.comments.push(comment);
                    blog.save();
                    res.redirect('/blogs/' + blog._id);
                    console.log(req.user.earnings);
                    console.log(User.earnings);
                }
            })
        }
    });
});

我希望收入值会增加并为特定用户的每条评论保存

标签: javascriptnode.jsmongodbexpress

解决方案


您需要使用“$inc”运算符来增加任何数值。此外,使用“更新”而不是“保存”来更新文档。

参考:MongoDB 文档


推荐阅读