Mongoose DocumentDB 连接通过 SSH 隧道失败

Mongoose DocumentDB connection fails through SSH tunnel

我正在尝试使用 Node.js/Typescript 和 Mongoose 连接到 AWS DocumentDB。我有一个 EC2 实例设置为 SSL 隧道,效果很好。我可以使用 Studio3T 和 mongo-cli 在本地连接到 DocumentDB。 此命令有效 mongo --sslAllowInvalidHostnames --ssl --sslCAFile rds-combined-ca-bundle.pem --username <username> --password <password>

但是如果我尝试使用 Mongoose 连接到同一个数据库,它会失败。这是我的代码和错误:

const options = {
  dbName: 'prodDB',
  user: connectionData.username,
  pass: connectionData.password,
  tls: true,
  tlsCAFile: '../rds-combined-ca-bundle.pem',
  tlsAllowInvalidHostNames: true,
};
try {
  await connect('mongodb://localhost:27017', options);
} catch (error) {
  console.log(error);
}

MongooseServerSelectionError: connect EHOSTUNREACH imagine-ip-address-here:27017
reason: TopologyDescription {
    type: 'ReplicaSetNoPrimary',
    servers: Map(1) {
      'censored:27017' => [ServerDescription]
    },
    stale: false,
    compatible: true,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    setName: 'rs0',
    commonWireVersion: 7,
    logicalSessionTimeoutMinutes: undefined
  }

至此,我已经尝试了 Mongoose 中几乎所有可能的配置,但我感到很绝望。感谢任何帮助

这似乎是 mongoose 版本 >= 6 的问题。 将 Mongoose 降级到版本 5.13.8 没有问题。 猫鼬开发者显然意识到了这个问题:https://github.com/Automattic/mongoose/issues/11105