node.js - mongoose远程连接mongodb,当客户端断开网络重连时报错topology was destoryed ?
本文介绍了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屋!
查看全文