如何通过mongoosejs连接到mongodb时处理错误

时间:2016-05-13 15:38:58

标签: node.js mongoose

如果在mongodb准备好之前调用mongoose.connect(...),会收到错误Error: connect ECONNREFUSED,没关系,但是在mongodb准备就绪后,mongoose不会重新连接,为什么?< / p>

为了处理这种情况,我调用mongoose.disconnect并在回调函数中再次调用mongoose.connect(...),如:

    connection = mongoose.connect(...).connection;
    connection.on("error", function(err) {
        setTimeout(function() {
            mongoose.disconnect(function(){
            connection = mongoose.connect(...).connection;
        }, 5000);
    });

此代码可以重新连接,但是当我启动mongodb时,mongodb接收的连接太多,所以我检查mongoose.disconnect,它调用connection.close,代码是

    Connection.prototype.close = function (callback) {
        var self = this;
        this._closeCalled = true;
        switch (this.readyState){
            case 0: // disconnected
                callback && callback();
                break;
            case 1: // connected
            case 4: // unauthorized
                this.readyState = STATES.disconnecting;
                this.doClose(function(err){

在我的情况下,连接没有准备好,所以readyState为0,所以它什么都不做,只是调用回调函数,这是否合理?

我该怎么办?

1 个答案:

答案 0 :(得分:0)

嘿,看起来你需要在max-connection-idle-time中设置低值 因此开放的理想连接应该由mongodb自动关闭

http://docs.mlab.com/connecting/#max-connection-idle-time