【问题标题】:Mongoose Disconnect/reconnect Issue猫鼬断开/重新连接问题
【发布时间】:2017-09-10 21:48:29
【问题描述】:

我目前正在使用 mongoose@4.0.4,每当我手动断开 MongoDb 的连接时,mongoose 断开/重新连接事件不会被触发纠正,重新连接事件被触发,并且每次手动断开/启动 MongoDb 时都不会触发断开连接。我的问题是处理 MongoDb 连接和断开连接状态,以便对于向服务器发出的每个请求,我都会看到 MongoDb 连接/断开连接的状态并发送适当的响应(可能是 500 代码),因为如果 MongoDb 不是,请求会在中间挂起连接的。 为了查看这是否是版本问题,我声明了版本 3.8.x 并转到 4.0.4 以查看事件在何处正确触发。我能够从 4.0.x 版本中捕获重新连接事件,但不能捕获断开连接事件。 基本上想知道我可以使用哪个版本来正确触发连接/断开连接事件或处理问题的方法。

下面是代码句柄事件

var db = mongoose.connection;
var connected;
db.on('open', function (ref) {
    connected = true;
    console.log('open connection to mongo server.');
});

db.on('connected', function (ref) {
    global.mongo_conn=true;
    console.log('Connected connection to mongo server.');
});

db.on('disconnected', function (ref) {
    connected = false;
    console.log('disconnected connection.');
});
db.on('disconnect', function (err) {
    console.log('Error...disconnect', err);
});
db.on('connecting', function (ref) {
    connected = false;
    console.log('connecting.');
});

db.on('close', function (ref) {
    global.mongo_conn=false;
    console.log('close connection.');
    connect();
});

db.on('error', function (ref) {
    connected = false;
    console.log('Error connection.');
    //mongoose.disconnect();
    global.mongo_conn=false;
});

db.on('reconnected', function () {
    global.mongo_conn=true;
    console.log('MongoDB reconnected!');
});
db.on('reconnecting', function () {
    global.mongo_conn=true;
    console.log('reconnecting!');
});
function connect() {
    mongoose.connect(config.mongo.uri, opts);
}

connect();

【问题讨论】:

标签: mongodb mongoose


【解决方案1】:
mongoose.connect(url, 
   {
      server: { 
         auto_reconnect: true,
         reconnectTries: Number.MAX_VALUE,
         reconnectInterval: 1000,
         socketOptions: {keepAlive: 1, connectTimeoutMS: 30000}
      } 
   }
);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
  • 2016-04-13
  • 1970-01-01
相关资源
最近更新 更多