猫鼬请求无限挂起

Mongoose request infinite hang

上下文:

我正在尝试在我的软件中处理与我的数据库相关的错误。

我遇到了以下问题:当数据库断开连接时,mongoose 请求挂起,直到它重新连接。


事情是这样的:

  1. 我启动我的软件
  2. 它通过 mongoose
  3. 连接到数据库
  4. Ctrl+Cmongod进程
  5. 我从 mongoose
  6. 得到了 "Disconnect""Close" 事件
  7. 我发起了一个 find(...) 请求
  8. 查找请求挂起

到目前为止我已经尝试过:

我试图在我的架构中使用选项 bufferCommands 根据 documentation 应该使 mongoose return 一个错误,如果没有可用连接,但结果是一样的。


我的密码是什么?

   mongoose.createConnection(..., {
      server: {
        // We disable reconnect from mongoose
        auto_reconnect: false,

        socketOptions: {
          // For long running applictions it is often prudent to enable keepAlive.
          // Without it, after some period of time you may start to
          // see "connection closed" errors for what seems like no reason.
          // From mongoose documentation
          keepAlive: 1,
        },
      },
    })

只要出现连接问题,就会直接从 mongoose 连接中抛出错误,您建立连接的主服务器有多种处理方法,具体取决于您的需要。

您进行的查找查询专门针对最终使用主连接对象的架构。您必须为自己和用户以这种方式处理它,您必须为他们发出的请求配置超时并向他们发送适当的响应。

根据超时取消请求

这可以在多个层面上完成,您的服务器逻辑、您的客户端或猫鼬本身。

按照这个人的回答用 mongoose 设置超时,显然 mongoose 没有正确记录。

对于服务器的逻辑,你可以为特定的请求创建一个系统,如果没有这个,然后用其他的东西将响应发送回客户端。

在客户端上,如果在特定时间内没有收到响应,则可以确定存在问题。

p.s默认有请求超时设置