【问题标题】:How to handle error when connected to mongodb by mongoosejs通过 mongoosejs 连接到 mongodb 时如何处理错误
【发布时间】:2016-09-09 21:26:55
【问题描述】:

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

为了处理这种情况,我调用 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,所以什么都不做,只是调用回调函数,合理吗?

我能做什么?

【问题讨论】:

    标签: node.js mongoose


    【解决方案1】:

    嘿,看来您需要在 max-connection-idle-time 中设置较低的值 所以打开的理想连接应该被 mongodb 自动关闭

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

    【讨论】:

      猜你喜欢
      • 2011-09-30
      • 2014-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-02
      • 2017-02-27
      • 2020-02-21
      • 2021-07-30
      相关资源
      最近更新 更多