javascript - 有没有办法可以根据用户活动(如评论)增加模型中的值?
问题描述
每次他/她在博客上发表评论时,我都会尝试增加用户当前的收入值。我正在用 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);
}
})
}
});
});
我希望收入值会增加并为特定用户的每条评论保存
解决方案
您需要使用“$inc”运算符来增加任何数值。此外,使用“更新”而不是“保存”来更新文档。
参考:MongoDB 文档
推荐阅读
- sql - Micorosft Access SQL - 计算 3 个相关表中的外键记录数
- c++ - 了解虚拟派生类的大小
- python - 如何在计算验证指标之前编写自定义 Keras 验证以对多个图像切片进行平均预测
- angular - NGX-MQTT | 蚊子
- java - Maven(exec plugin) 不使用“/”字符解析项目路径
- ssis - 添加新的转换列失败
- database - 使用 MongoDB Compass 克隆 MongoDB 数据库
- gluon-mobile - Gluon Afterburner Presenter.initialize() 未调用
- java - 获取当前时间前后 12 小时
- nuxt.js - 如何在 Nuxt 路由器中间件中添加重定向?