node.js - 如何更新 Mongoose 模型嵌套数组中的数字

标签 node.js mongodb express mongoose

有人可以解释一下我做错了什么吗?我正在尝试通过添加两个数字来更新我的 Mongoose 架构上的嵌套数组内的数字值

这是有问题的部分

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

req.existing 份额为 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');
          }


    })


};

最佳答案

在进行更新之前转换为数字。

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

然后

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

关于node.js - 如何更新 Mongoose 模型嵌套数组中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48744398/

相关文章:

mongodb - 无法针对添加到 2.6.8 副本集的 Mongodb 3.0.1 成员进行身份验证

javascript - 使用 Express 4 将数组从 Nodejs 中的 app.js 传递到 paths/index.js

javascript - 如何添加 npm 依赖作为对等依赖

node.js - 在nodejs中测试后台进程(使用磁带)

node.js - 如何配置WebStorm识别现有项目中的 Node ,错误: unresolved function require

javascript - package.json 的 main、module、browser 属性应该指向 minified 还是 source?

mongodb - 通过迁移到 NoSQL 提高速度

mongodb - Kubernetes 杀死 Mongo 容器

Node.js/快速路由

javascript - 为什么我的 Web 应用程序在发出几个将项目推送到我的 mongodb 数据库的请求后暂停?