node.js - mongoose远程连接mongodb,当客户端断开网络重连时报错topology was destoryed ?

查看:1051
本文介绍了node.js - mongoose远程连接mongodb,当客户端断开网络重连时报错topology was destoryed ?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

问题描述:

我在我的电脑开启了一个mongodb数据库的服务,并配置了用户认证和远程连接。其他电脑通过我的ip地址以及设置的端口、配置的用户等连接到我的数据库,并可以进行读写操作。
但是,当远程连接我的数据库的电脑手动断开网络,再次接入网络的时候,或者长时间没有对我的数据库进行查询读写操作,就会报错,报错信息:

 "MongoError: Topology was destroyed"

而,我在本地进行了同样的测试,并没有问题。

我的方法?

于是查了一些资料,在mongoose连接数据库的时候,加上一些参数,如下:

var options = {
  server: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } },
  replset: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } }
};
mongoose.connect(secrets.db, options);

或者是这样的:

var options = { server: { 
        // sets how many times to try reconnecting
        reconnectTries: Number.MAX_VALUE,
        // sets the delay between every retry (milliseconds)
        reconnectInterval: 1000 
        } 
}
mongoose.connect(secrets.db, options);

经过一番尝试,依然没有解决上述问题。
现在主要的问题在于,我本地就没有这样的问题..

请教各位

解决方案

我做了如下的改动

var DB_URL = 'mongodb://username:password@host:port/databaseName';
var options = { 
    server: { 
        socketOptions: { 
            keepAlive: 1, 
            connectTimeoutMS: 30000 
        } ,
        reconnectTries:30,
        reconnectInterval:3000
    }, 
    replset: { 
        socketOptions: { 
            keepAlive: 1, 
            connectTimeoutMS: 30000 
        } 
    } 
}; 
// 连接数据库
mongoose.connect(DB_URL,options);

然后再也没有报过我问题中描述的错误。

这篇关于node.js - mongoose远程连接mongodb,当客户端断开网络重连时报错topology was destoryed ?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆