我是一个相当新的开发人员,尝试使用NodeJS,MongoDB和Mongoose在API端点的帮助下开发一个简单的CRUD应用程序。使用Mongoose驱动程序的findOneAndUpdate方法更新文档时,我得不到正确的结果。
通过导入CSV文件,在mongoimport命令的帮助下形成集合。请考虑我有以下文件。
{
"_id" : ObjectId("599c8da6b18e3117b09ea299"),
"MetaKey" : "lastWPSyncedStatus",
"MetaValue" : "Running"
}
这里的MetaKey是lastWPSyncedStatus,其对应的值将转为Running。
我需要做的就是当" / test / client"端点被点击我想将 lastWPSyncedStatus更新为STOP 。使用PUT HTTP方法提交URL以进行更新。
RosterOptions.findOneAndUpdate(
{
'MetaKey' : 'lastWPSyncedStatus'
},
{
$set:
{
'MetaValue': 'STOP'
}
},
{
new: true
},
function(err,data){
if(err){
res.send(err);
}
res.json(data);
// console.log(data);
}
)
我正在尝试将MetaValue更新为“停止”'将MetaKey作为' lastWPSyncedStatus'的文档。我尝试在nodejs中提交查询,它返回没有任何错误,但mongodb没有更新。此外,当我为mongoose设置调试时,以下查询将提交给mongoose。
Mongoose: rosterOptions.findOne({ MetaKey: 'lastWPSyncedStatus' }, { new: true, fields: {} })
输出是:
{
"_id": "599c8da6b18e3117b09ea299",
"MetaKey": "lastWPSyncedStatus",
"MetaValue": "Running"
}
我无法确定问题所在。我也尝试使用更新方法,但我得到以下输出。
{
"ok": 0,
"n": 0,
"nModified": 0
}
当我尝试在mongodb中运行函数update()时,我的文档已正确更新。
我提到mongoose documentation并试图以类似的方式实施它。如果有人能引导我解决这个问题,我会很高兴。
答案 0 :(得分:0)
我找到了问题的答案。我错误地定义了一个模式,因为mongoose无法正确识别我的集合。我通过修改架构修复了这个问题。将其标记为答案。