Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 复制集未找到错误后Mongoose无法重新连接_Node.js_Mongodb_Mongoose_Replicaset - Fatal编程技术网

Node.js 复制集未找到错误后Mongoose无法重新连接

Node.js 复制集未找到错误后Mongoose无法重新连接,node.js,mongodb,mongoose,replicaset,Node.js,Mongodb,Mongoose,Replicaset,我正在运行一个连接MongoDB Atlas的小网站。它有一个包含3个成员的复制集。在大多数情况下,一切都很好,但时不时,Atlas的复制集崩溃(或其他什么?),猫鼬从此停止工作。它抛出一个错误-MongoError:在replicaset中找不到主服务器,就是这样 它不会在('error')上触发mongoose.connection.on(),并且在此之后不会报告任何错误。它只是无法返回任何数据 对我来说调试这个有点困难,因为它正在生产环境中运行,我无法判断replicaset何时会失败。以

我正在运行一个连接MongoDB Atlas的小网站。它有一个包含3个成员的复制集。在大多数情况下,一切都很好,但时不时,Atlas的复制集崩溃(或其他什么?),猫鼬从此停止工作。它抛出一个错误-
MongoError:在replicaset中找不到主服务器
,就是这样

它不会在('error')上触发
mongoose.connection.on(
),并且在此之后不会报告任何错误。它只是无法返回任何数据

对我来说调试这个有点困难,因为它正在生产环境中运行,我无法判断replicaset何时会失败。以下是我的连接方式:

function connect() {
  tries++;
  mongoose.Promise = Promise;
  const { uri, options } = config.mongoDb;
  return mongoose.connect(uri, options);
}

let db = connect();
db
    .connection
    .on('error', (err) => {
        Raven.captureException(err);
        db.disconnect();
    })
    .on('disconnected', () => {
        db = connect();
    });
我的选择如下:

options: {
  server: {
    autoReconnect: true,
    ssl: true,
    poolSize: 10,
    socket_option: {
      keepAlive: true
    }
  }
}

以前有人有过类似的问题吗?你知道我在这里做错了什么,或者如何捕捉错误,以便我可以正确地重新连接吗?

你使用的是什么版本的mongoose?副本集选择不应导致连接错误,因为此错误仅在首次连接到副本集时触发。猫鼬应该自动重新连接。请尝试中提供的脚本,看看是否出现除
null
以外的任何错误?我使用的是^4.6.1。测试这一点真的很困难,因为这只发生在生产环境中,当它停止工作时是非常随机的。您是否尝试过升级到最新版本(目前为4.13.9)?此问题可能已在较新的更新中修复。您使用的是什么版本的mongoose?副本集选择不应导致连接错误,因为此错误仅在首次连接到副本集时触发。猫鼬应该自动重新连接。请尝试中提供的脚本,看看是否出现除
null
以外的任何错误?我使用的是^4.6.1。测试这一点真的很困难,因为这只发生在生产环境中,当它停止工作时是非常随机的。您是否尝试过升级到最新版本(目前为4.13.9)?此问题可能已在较新的更新中修复。