如何更新mongoose模型嵌套数组中的数字

时间:2018-02-12 10:36:20

标签: node.js mongodb express mongoose

有人可以解释一下我做错了什么。我试图通过添加两个数字

来更新我的mongoose模式中嵌套数组中的数字值

这是有问题的部分

  $set: {
    "shareHolders.$.shares": Number(req.existingStock) + Number(req.stock)
  }

req.existing shares是100,req.stock是格式化为字符串,但等于100,所以,简而言之,股票的新值应该是200

但是当我运行代码时,所述股东的股票不会改变它仍然是原始价值。

这是完整的代码段

module.exports.updateShareHolder = function(req, callback) {

console.log('updateShareHolder');
console.log(req);
console.log(req.existingStock + Number(req.stock));

  Company.update({
      "_id": req.companyID,
      "shareHolders.userId": req.userID
    }, {
      $push: {
        "shareHolders.$.agreements": {
          agreementID: req.agreementID
        }
      }
    }, {
       $set: {
      "shareHolders.$.shares": Number(req.existingStock) + Number(req.stock)
  }
    }, function(err) {

          if (err) {
            console.log(err);
            callback(err, err);
          } else {
            console.log('updateShareHolder');
            callback(null, 'success');
          }


    })


};

1 个答案:

答案 0 :(得分:1)

在执行update之前转换为数字。

    const updatedStock = Number(req.existingStock) + Number(req.stock)

然后

     $set: {
      "shareHolders.$.shares": updatedStock
  }