Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Nodejs Mongoose无法更新数据库中的值_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript Nodejs Mongoose无法更新数据库中的值

Javascript Nodejs Mongoose无法更新数据库中的值,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我对Nodejs和MongoDB还很陌生。这可能是一个简单的错误,但我似乎无法从DB更新值。我到处搜索,但我的语法似乎是正确的。请帮帮我 var dataConstruct = {} dataConstruct[fieldName] = fieldValue; updateRecordModel.find(dataConstruct , function(err, field) { if(err) { logger.error("Error deleting records. Err

我对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();
“查找”正在返回数据。我使用.lean()获取javascript对象,而不是文档模型对象,以便修改数据。我似乎无法在不使用.lean()的情况下修改返回的数据,正如本文中的问题一样

我试图找到数据并更新或重新保存它,我尝试了本文中提到的所有更新语法和方法(包括再次查找并保存文档),但没有一种有效,因为我无法修改返回的数据

这是find返回的json {“_id”:“564c29d96bf38ba3039f4844”,“选项1”:“Gary”,“选项2”:“Fred”,“_v”:0}

我需要知道如何更新此值

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

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

在控制台中,返回的记录未经更新

您可以在
字段[0]之后重试;使用保存方法<代码>字段[0]。保存()
。我希望它能有所帮助

因为mongoose 4.0,
findOneAndUpdate
返回的值始终是旧文档。如果希望返回新文档(更新的文档),则必须在选项中传递
{new:true}
,如上所述

你应该以这样的方式结束:

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

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