I'm learning Node.js and just started working with MongoDB.
I'm making a connection with the MongoDB Cluster I've created
const dbURI = 'mongodb+srv://testuser:test1234@nodelearning.fzofb.mongodb.net/mydb?retryWrites=true&w=majority';
mongoose.connect(dbURI, { useNewUrlParser: true, useUnifiedTopology: true })
.then((result) => console.log('connected to db'))
.catch((err) => console.log(err));
When I run it nodemon app I get this error:
Error: querySrv ENOTFOUND _mongodb._tcp.mydb.fzofb.mongodb.net at QueryReqWrap.onresolve [as oncomplete] (node:dns:206:19) { errno: undefined, code: 'ENOTFOUND', syscall: 'querySrv',
hostname: '_mongodb._tcp.mydb.fzofb.mongodb.net' }
The error indicates that there is no error in the code. This leaves you with three potential possibilities:
In my case, I was connected to public wifi in a coworking space. I change my connection to my personal hotspot and it worked.
Also if you have your mongodb Atlas cluster inactive after a while. It could get paused and then when you run a server it returns the error you had.
So another bet is to login to your Atlas account and confirm if it hasn't been paused. Well this option of mine should only be considered after trying the options above.
You need to convert special characters in connection string password to percent encoding.
I had the same issue with mongodb-compass. For me it was incorrect connection string format. So in my case it required to convert @ symbol in my password to %40 (percent encoding).