【发布时间】: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