Node.js findOneAndUpdate更新数据库但挂起

Node.js findOneAndUpdate更新数据库但挂起,node.js,mongodb,asynchronous,mongoose,Node.js,Mongodb,Asynchronous,Mongoose,问题:我的异步函数会更新数据库,但不会继续执行脚本的其余部分 //获取数据后处理它。。。 异步函数状态(数据){ log(“刻录已编译的数据并保存…”); let filter={u id:“5e4454059a0be1c238b5f70b”}; 如果(data.error==true){ log(“检索刻录数据时出错”); var update={update:burn.date,error:data.error}; }否则{ 变量更新={ 日期:data.date, 降水量:数据。降水量,

问题:我的异步函数会更新数据库,但不会继续执行脚本的其余部分

//获取数据后处理它。。。
异步函数状态(数据){
log(“刻录已编译的数据并保存…”);
let filter={u id:“5e4454059a0be1c238b5f70b”};
如果(data.error==true){
log(“检索刻录数据时出错”);
var update={update:burn.date,error:data.error};
}否则{
变量更新={
日期:data.date,
降水量:数据。降水量,
风:{上午:数据。风。上午,下午:数据。风。下午},
ventIndex:data.ventIndex,
aqi:data.aqi,
更新:data.updated
};
}
控制台日志(更新);
让doc=wait BURN.findOneAndUpdate(过滤器,更新,{upsert:true},(错误,结果)=>{
//***即使数据库已更新,下面的内容也不会执行***
如果(错误){
console.log(错误);
}否则{
控制台日志(结果);
}
});
console.log(“刻录数据更新”);
}
以下是输出:

Getting Burn Data...
(node:16248) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.
Response Received Processing...
Precipitation: 0
Morning Wind: 6
Afternoon Wind: 8
Ventilation Index: POOR
AQI: 48
Burn Data Compiled Saving...
{
  date: '02/13/20',
  precipitation: 0,
  wind: { morning: 6, afternoon: 8 },
  ventIndex: 'POOR',
  aqi: 48,
  updated: '2020-02-13T12:42:11.201Z'
}
故障排除:

我已经设法追踪到
let doc=wait BURN.findOneAndUpdate(filter,update,(error,result)=>{
行。我无法让它抛出一个错误让我捕捉(或者我没有尝试正确捕捉错误)


因此,我猜测没有错误,我只是做了一些不正确的事情。

您同时使用了
wait
和这里的回调
(错误,结果)

你需要选一个,而不是两个都选

等待 回拨
我还建议大家阅读一下
回调
承诺
等待
之间的区别。从长远来看,这将对你有很大帮助。杰克,谢谢你的帮助。我仍然有同样的问题。最初我刚刚有了等待,我添加了回调来尝试捕捉错误。(这显然是错误的方式)。从那时起,我改为:`` try{let result=wait BURN.findOneAndUpdate(filter,update,{upsert:true});console.log(“BURN Data Updated”)}catch(error){console.log(error)}``它仍然没有记录“BURN Data Updated”或者生成错误。忽略我的上一个问题,我相信我已经解决了。我试图将其作为一个模块进行故障排除,并将其与我的app.js分开加载,尽管我的app.js仍在后台运行。我重新启动了app.js,它完成了整个功能。再次感谢您的帮助。
try {
  let result = await BURN.findOneAndUpdate(filter, update, {upsert: true});
  console.log("Burn Data Updated")
} catch (error) {
  console.log(error)
}
let doc = BURN.findOneAndUpdate(
  filter,
  update,
  { upsert: true },
  (error, result) => {
    if (error) {
      console.log(error);
    } else {
      console.log(result);
      console.log("Burn Data Updated");
    }
  }
);