繁体   English   中英

Nodejs猫鼬无法更新数据库中的值

[英]Nodejs Mongoose Cannot update values in DB

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

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();

查找正在返回数据。 我正在使用.lean()来获取javascript对象而不是文档模型对象,以便可以修改数据。 我似乎无法在不使用.lean()的情况下修改返回的数据,这是本文中的问题, 为什么您不能修改Mongoose查询返回的数据(例如:findById)

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

这是从find {“ _id”:“ 564c29d96bf38ba3039f4844”,“ Option1”:“ Gary”,“ Option2”:“ Fred”,“ __ v”:0}返回的json

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

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

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

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

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

从猫鼬4.0开始, findOneAndUpdate返回的值始终是旧文档。 如果您希望退回新的(更新的文档),则必须按照其文档中所述选项中传递{new: true}

您应该以如下形式结束:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM