MongoDB随机无法删除分片数据库

时间:2016-04-18 13:13:50

标签: node.js mongodb mongoose mocha database

我很少使用真正的MongoDB数据库版本3.2的集成测试。使用Mocha运行测试,并在每次测试后使用以下代码删除测试数据库。它使用Mongoose版本4.4.12和本机MongoDB Node.js驱动程序。

afterEach((done) => {
    const connection = mongoose.createConnection(config.db.host);
    connection.once("open", () => {
    connection.db.command({ dropDatabase: 1 })
        .then((res) => done(null, res))
        .catch(done);
    });
})

它很好用,直到我在本地环境中启用分片以覆盖测试。删除数据库开始随机失败。上面的代码无法在每三次测试运行时丢弃我的测试数据库。我的分片设置很少,有一个配置服务器,一个mongos和两个mongo分片。

添加一些日志记录后,我注意到connection.db.command({ dropDatabase: 1 })在失败的运行中返回{ info: 'database does not exist', ok: 1 }。数据库不会被删除,因为MongoDB认为它已被删除,即使情况并非如此。

我完全错了吗?是否有一些Mongoose / MondoDB Node.js本机驱动程序配置或我在这里缺少?或者这是一个已知的问题?非常感谢任何帮助。

编辑:如果我直接使用MongoClient,也会发生同样的事情,所以Mongoose不会导致此问题。

0 个答案:

没有答案