connect-mongostore抛出捕获错误

时间:2015-02-19 11:33:09

标签: node.js mongodb session error-handling

我在两个服务器之间平衡了一个节点应用程序,它使用MongoLab作为会话存储。然而,最近我们在与MongoLab的连接中遇到了一些间歇性的辍学,这导致所述连接 - mongostore抛出以下错误并且永远不会恢复:

/node_modules/connect-mongostore/lib/connect-mongostore.js:80
  if (err) throw new Error('Error connecting to database:\n' + err.message
                 ^
Error: Error connecting to database:
failed to connect to [ds031681.mongolab.com:31681]
Error: failed to connect to [ds031681.mongolab.com:31681]

我正在使用以下代码初始化会话:

var session          = require('express-session'),
MongoStore       = require('connect-mongostore')(session);

var sessionStore = new MongoStore({
   host: 'ds031681.mongolab.com',
   port: '31681',
   db: 'sessions',
   username: 'username',
   password: 'password'
});

app.use(session({
    secret: 'secret',
    store: sessionStore,
    autoReconnect: true,
    resave: false,
    saveUninitialized: true,
    ssl: true
}));

我真的很难找到一种方法来捕获此错误,因此我可以重试连接,或者至少重新启动应用程序。似乎autoReconnect选项不会从此类故障中重新连接。每个后续请求都会返回错误:Error: no open connections

我尝试添加:

sessionStore.on('error', function(err){
   console.log(err);
});

但似乎这没有做任何事情。显然尝试catch块不起作用,似乎将中间件放入域中也不起作用。任何人都可以帮我抓住这个错误,所以我可以适当地处理它吗?

由于

哦,理想情况下,我希望能够在不必等待某人尝试连接的情况下执行此操作,因此它可以识别连接何时断开并在后台重新连接。

0 个答案:

没有答案