首页 > 开发 > NodeJS > 正文

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

2017-09-08 17:11:22  来源:网友分享

问题描述:

我在我的电脑开启了一个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);

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