帆mongo重新连接

时间:2017-09-30 15:34:16

标签: node.js mongodb sails.js waterline sails-mongo

我使用帆1.0.0-37和sails-mongo 1.0.0-10。 当风帆被解除时,如果mongo db server启动并运行,一切正常。如果mongo db发生故障,并且node.js尝试作为功能的一部分访问mongo db并且超时,则会向用户显示内部服务器错误。这一切都没关系。但是,当mongo重新启动时,sails不再重新连接到它并抛出此错误:

" AdapterError:数据库适配器发生意外错误:fn调用error退出时出现:{ MongoError: Topology was destroyed } "

我将autoReconnect:true设置为mongodb适配器的选项的一部分..只有当node.js在它关闭时没有尝试访问mongodb服务器时,此重新连接才有效。如何解决这个问题?否则,它无法在prod中使用帆1.0和sails-mongo?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,下面是解释和解决方法:

如果您未设置“ reconnectTries”,则默认设置为30。经过30次尝试,帆无法连接到mongo并抛出“拓扑已被破坏”。

对我来说,解决方案是将reconnectTries设置为Number.MAX_VALUE

default: {
  adapter: 'sails-mongo',
  url: 'mongodb://admin:admin123@127.0.0.1:27017/datastore?authSource=admin',
  reconnectTries: Number.MAX_VALUE,
  reconnectInterval: 1000
}

我希望能有所帮助。