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

时间:2019-03-16 05:04:09

标签: node.js mongodb mongoose kubernetes

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

 Error: querySrv ENOTIMP _mongodb._tcp.cluster1-owfxv.mongodb.net

我正在本地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);
    });

错误消息对我来说不太清楚。奇怪的是它可以直接工作,但在kubernetes集群中却无法工作。

我将不胜感激。

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

使用@cEeNikC所述的旧网址,甚至在猫鼬给出以下错误时也可以使用-

Error: querySrv ETIMEOUT _mongodb._tcp.cluster0.aq9un.mongodb.net
    at QueryReqWrap.onresolve [as oncomplete] (dns.js:203:19) {
  errno: 'ETIMEOUT',
  code: 'ETIMEOUT',
  syscall: 'querySrv',
  hostname: '_mongodb._tcp.cluster0.aq9un.mongodb.net'
}

答案 2 :(得分:0)

转到您的群集设置,并启用所有IP地址的访问权限(如果您这样做是出于学习目的,因为它不安全)。

答案 3 :(得分:0)

我添加了这个“&w=majority”并且工作了:

之前:mongodb+srv://:@sdq25.lepde.mongodb.net/myFirstDatabase?retryWrites=true 之后:mongodb+srv://:@sdq25.lepde.mongodb.net/myFirstDatabase?retryWrites=true&w=majority