【问题标题】:How do I increment a Number value in Mongoose?如何在 Mongoose 中增加数字值?
【发布时间】:2017-05-17 14:04:54
【问题描述】:

StackOverflow 的人们,我正在为这个问题而烦恼,我如何增加 a
猫鼬中的数值?我已经尝试了下面的代码,但它不起作用。我正在尝试在提交表单时将值增加一。以下是我的代码:

app.post('/like', function (req, res) {
    var id = req.body.id;
    var query = {_id: id};
    var post = Meme.findOne(query);
    Meme.findOneAndUpdate(post, post.likes: post.likes+1)
});

非常感谢您的宝贵帮助!

【问题讨论】:

  • 你可以试试这样的Meme.findOneAndUpdate(query, { $inc: { "post.likes": 1 } })。未测试。
  • 您是否在 post 变量中获取数据?请输入console 声明并检查数据是否到来。
  • @Safal_R_Aryal 您也可以参考此问题以获取更多信息stackoverflow.com/questions/8621948/doing-inc-with-mongoose 谢谢!

标签: node.js mongodb mongoose


【解决方案1】:

您可以为此目的使用$inc。

试试这个:

var id = req.body.id;
Meme.findOneAndUpdate({_id :id}, {$inc : {'post.likes' : 1}}).exec(...);

有关$inc的更多信息,请阅读MongoDB $inc documentation

【讨论】:

  • 如果你想减少也可以:只要给一个负数,像这样:var id = req.body.id; Meme.findOneAndUpdate({_id :id}, {$inc : {'post.likes' : -1}}).exec(...);
【解决方案2】:

对于 mongoose 版本 5,需要一个附加选项“useFindAndModify”:

 // Make Mongoose use mongoDB's `findOneAndUpdate()`. Note that this option is `true`
 // by default, you need to set it to false.
 mongoose.set('useFindAndModify', false);


 Meme.findOneAndUpdate( {_id: res._id}, 
      {$inc : {'UID' : 1}}, 
      {new: true}, 
      function(err, response) { 
           // do something
      });

Mongoose Depreciation Doc

【讨论】:

    【解决方案3】:
    Meme.findOneAndUpdate({ _id: res._id }, { $inc: {'post.like': 1 } }, {new: true },function(err, response) {
     if (err) {
     callback(err);
    } else {
     callback(response);
    }
    
    

    Hope this link help to find your solution

    【讨论】:

      【解决方案4】:

      你也可以试试这个,我用这个查询点赞了帖子

      app.put('/like', (req, res) => {
          Meme.findByIdAndUpdate(req.body.postId,{
          $push:{likes: req.user._id}
          }, {
              new: true
          }).exec((err, result) => {
              if(err){
                  return res.status(400).json({error: err})
              }else{
                  res.json(result)
              }
          })
      })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-15
        • 1970-01-01
        • 2020-08-15
        • 2017-04-25
        • 2016-08-27
        • 2014-01-22
        • 1970-01-01
        • 2021-06-25
        相关资源
        最近更新 更多