问题描述:
我在我的电脑开启了一个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);
然后再也没有报过我问题中描述的错误。