【发布时间】:2022-01-05 17:32:44
【问题描述】:
我对 JavaScript Web 开发有点陌生,所以我仍然对异步函数的流程有所了解,这对于外行来说可能有点出乎意料。在我的特定用例中,我想在进入主代码之前在可用数据库列表上执行一个例程。具体来说,为了确保始终正确初始化测试环境,如果数据库已经存在,我将删除它,然后从配置文件构建它。
我的基本流程是这样的:
let dbAdmin = client.db("admin").admin();
dbAdmin.listDatabases(function(err, dbs){/*Loop through DBs and drop relevant one if present.*/});
return await buildRelevantDB();
通过在整个过程中添加一些console.log() 项目,我确定listDatabases() 调用基本上将回调放入排序队列中。我实际上输入了buildRelevantDB()之前进入传递给listDatabases的回调。在这个特定的示例中,它似乎仍然有效,我认为因为读取配置文件的调用也是异步的,因此将项目放入同一个队列但稍后,但我发现这很脆弱和草率。必须有某种方法来确保listDatabases 部分在继续前得到解决。
我找到的最接近的解决方案是 here,但我仍然不知道如何让我传递给 listDatabases 的回调像该解决方案中的 then。
【问题讨论】:
标签: node.js mongodb asynchronous