猫鼬无法连接到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集群中却无法工作。
我将不胜感激。
答案 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