猫鼬请求无限挂起

时间:2017-01-12 09:37:59

标签: node.js mongodb mongoose mongoose-schema

上下文

  • Mongoose v4.7.6
  • MongoDB v3.2.11

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

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

以下是发生的事情

  1. 我启动了我的软件
  2. 通过 mongoose
  3. 连接到数据库
  4. Ctrl + C mongod 进程
  5. 我从mongoose获取“断开连接”“关闭”事件
  6. 我发起 find(...)请求
  7. 查找请求挂起
  8. 到目前为止我尝试过的内容:

    我尝试在我的架构中使用选项 bufferCommands ,如果没有可用的连接,那么根据documentation应该使mongoose返回错误,但结果是相同的

    我的代码是什么?

       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,
            },
          },
        })
    

1 个答案:

答案 0 :(得分:1)

当出现连接问题时,直接从mongoose连接抛出错误,您建立连接的主服务器以及根据您的需要有多种方法来处理它。

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

根据超时取消请求

这可以在几个级别,服务器的逻辑,客户端或猫鼬本身上完成。

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

https://stackoverflow.com/a/32609226/5225363

对于服务器的逻辑,您可以为特定请求创建一个系统,如果没有这个请求,则将响应发送回客户端。

在客户端如果在特定时间内未收到任何响应,请确保存在问题。

p.s默认情况下,请求的超时设置