【问题标题】:Nodejs Mongoose Cannot update values in DBNodejs Mongoose 无法更新数据库中的值
【发布时间】:2015-11-19 19:00:19
【问题描述】:

我对 Nodejs 和 MongoDB 还很陌生。这可能是一个简单的错误,但我似乎无法从 DB 更新值。我进行了广泛搜索,但我的语法似乎是正确的。请帮帮我。

var dataConstruct = {}
dataConstruct[fieldName] = fieldValue;
updateRecordModel.find(dataConstruct , function(err, field) {
  if(err) {
    logger.error("Error deleting records. Error -" + err)
    callback(err, "Error while searching for record.Please cheack the values posted")
  }
  else {
    logger.info("JSON"+JSON.stringify(field[0].Option1));
    field[0].Option1="Max";
    logger.info("JSON"+JSON.stringify(field[0].Option1));
    if(field){
       //code to update
  }
  else{
    callback(err, "No such data present")
  }
  }

}).lean();

Find 正在返回数据。我正在使用 .lean() 来获取 javascript 对象而不是文档模型对象,以便我可以修改数据。我似乎无法在不使用 .lean() 的情况下修改返回的数据,就像这篇文章中的问题 Why can't you modify the data returned by a Mongoose Query (ex: findById)

我试图找到数据并更新或重新保存它,我尝试了这篇文章https://scotch.io/tutorials/using-mongoosejs-in-node-js-and-mongodb-applications 中提到的所有更新语法和方法(包括查找然后再次保存文档),但似乎没有一个工作,因为我无法修改返回数据

这是 find 返回的 json {"_id":"564c29d96bf38ba3039f4844","Option1":"Gary","Option2":"Fred","__v":0}

我需要知道如何更新这个值

这是我用于查找和更新的代码

    updateRecordModel.findOneAndUpdate({"Option1": "Gary" }, { "Option1": "Max" }, function(err,records) {
    if (err) throw err;
    console.log(records);
    });

在控制台记录正在返回而不被更新

【问题讨论】:

  • 当您尝试更新时正在运行什么查询?您在尝试时遇到了哪些问题?这将是对findOneAndUpdate 的明确使用。当您按照您的描述尝试使用findOneAndUpdate 时,您在参数上使用了什么?

标签: javascript node.js mongodb mongoose


【解决方案1】:

field[0].Option1="Max"之后可以试试;使用保存方法。 field[0].save() 。希望对你有帮助

【讨论】:

    【解决方案2】:

    从 mongoose 4.0 开始,findOneAndUpdate 返回的值始终是旧文档。如果您希望返回新的(更新的文档),您必须在选项中传递{new: true},如in their documentation 所述。

    你应该得到这样的结果:

    updateRecordModel.findOneAndUpdate({"Option1": "Gary" }, { "Option1": "Max" }, {new: true}, function(err,records) {
      if (err) throw err;
      console.log(records);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 2020-08-29
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多