使用node.js mongodb native调用db.destroyDatabase时,什么可能导致"拓扑被破坏"错误?

Owe*_*wen 5 mongodb node.js

我正在使用Node.js Mongodb本机驱动程序运行一些集成测试.每个测试都涉及连接到数据库,验证它是否已经存在(例如,没有任何文档集合),运行测试,然后删除数据库.高级代码如下:

const runSafeTest = function runSafeTest(test) {
  async.waterfall([
    connectToMongo,
    throwIfDbExists,
    instantiateServerConnection,
    test
  ],
  function doneWaterfall(err, db) {
    db.dropDatabase(function(dbErr) {
      if (dbErr) throw dbErr
    });
  })
};
Run Code Online (Sandbox Code Playgroud)

每次db.dropDatabase()调用它都会引发以下错误:

MongoError: topology was destroyed
Run Code Online (Sandbox Code Playgroud)

不要求对上面的代码进行特定的调试,而只是一个普遍的问题:MongoDB中的"拓扑被破坏"错误意味着什么样的东西可能导致它?浏览了Mongo文档,源代码和其他SO问题,但无法找到关于"拓扑被破坏"的含义的明确答案,以及如何防止它在我们正在使用的测试方法中出现.

谢谢!

Owe*_*wen 24

在任何人偶然发现这个问题的机会,问题是db.close()对后来使用的相同数据库引用的错误调用db.dropDatabase().IMO' 拓扑被破坏 '是一个奇怪的错误(可能是' 套接字关闭 '),但在这种情况下是问题.