如果没有数据库连接,如何使MongoDB查询抛出错误?

时间:2017-09-19 21:08:18

标签: javascript node.js mongodb mongoose

基本上,在调用查询之前,我的Node.js应用程序中的MongoDB连接已关闭,如下所示:

// connection dropped

yield Thing.findOneAndUpdate({ foo: 'bar' }, { foo: 'baz' })

即使在重新建立连接之后,承诺只是挂在那里并且从未解决过(它也没有抛出错误)。

认为我想要的行为是因为它在尝试运行命令或查询时抛出错误,如果没有连接,那么这是我的问题:我怎么能让它抛出?

首先,我认为Mongoose会缓冲命令,然后在重新建立连接时执行它们,但这种情况从未发生过。根据Mongoose GitHub中的this issue,您可以设置bufferCommands: false并在连接bufferMaxEntries: 0上设置选项,如果在命令期间没有连接,它将为我提供所需的“抛出错误”行为,但它似乎也没有这样做。

有什么想法吗?

注意:

使用Mongoose v4.6.3和Node v6.7.0,我的Mongoose配置看起来像这样

{
  server: {
    poolSize: 20,
    socketOptions: {
      // 5 mins
      keepAlive: 300000,
      // 30 seconds
      connectTimeoutMS: 30000
    }
  },
  replset: {
    socketOptions: {
      keepAlive: 300000,
      connectTimeoutMS: 30000
    }
  }
}

0 个答案:

没有答案