Mongoose 无法连接:错误:querySrv ENOTIMP mongodb.tcp.cluster1-owfxv.mongodb.net

Ayy*_*far 2 mongoose mongodb node.js kubernetes

Mongoose 无法连接到 mogodb Atlas。它每次都给我这个错误:

 Error: querySrv ENOTIMP _mongodb._tcp.cluster1-owfxv.mongodb.net
Run Code Online (Sandbox Code Playgroud)

我在本地 minikube 内的 kubernetes 集群内运行。如果我直接运行项目,那么它可以完美运行,但是使用 minikube 它总是给我错误。

以下是我的代码:

  const url = "mongodb+srv://name:password@cluster1-owfxv.mongodb.net/test?retryWrites=true";

    const mongoDbOptions = {
        useNewUrlParser: true,
        reconnectTries: 10,
        autoReconnect: true

    };
    mongoose.connect(url, mongoDbOptions).then((r) => { }).catch((e) => {
        console.log(e);
    });
Run Code Online (Sandbox Code Playgroud)

错误信息对我来说不是很清楚。奇怪的是它可以直接工作,但对于 kubernetes 集群却不起作用。

我将非常感谢任何贡献。

cEe*_*iKc 6

尝试使用与 mongo 驱动程序 2.2.12 或更高版本兼容的连接字符串,即带有 mongodb://username:password@host1:port,host2:port,host3:port/databaseName 的连接字符串

不清楚为什么与 mongodb 的连接不能使用新的 url。

  • 谢谢你。实际上我不确定为什么新的连接字符串不能正常工作。在 kubernetes 中使用时,网络设置存在一些问题。我不认为这与猫鼬有任何关系。如果您尝试在 kubernetes 之外正常连接,则连接不会有任何问题。 (3认同)
  • Mongoose 在内部使用 mongo 驱动程序。只需尝试使用旧的连接字符串,看看它是否有效。 (2认同)
  • 转到 atlas 仪表板,您会在那里找到旧的连接字符串 (2认同)