我在两个服务器之间平衡了一个节点应用程序,它使用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块不起作用,似乎将中间件放入域中也不起作用。任何人都可以帮我抓住这个错误,所以我可以适当地处理它吗?
由于
哦,理想情况下,我希望能够在不必等待某人尝试连接的情况下执行此操作,因此它可以识别连接何时断开并在后台重新连接。