'MongoDB Docker URI does not have hostname, domain name and tld
I am trying to connect to my local MongoDB Database that is on docker with nodejs. My component are:
.env file
MONGODB_USERNAME = 'accountUser'
MONGODB_PASSWORD = 'password'
MONGODB_HOST = 'mongodb'
MONGODB_DATABASE = 'mydb'
Code:
const uri = `mongodb+srv://${process.env.MONGODB_USERNAME}:${process.env.MONGODB_PASSWORD}@${process.env.MONGODB_HOST}/${process.env.MONGODB_DATABASE}?retryWrites=true&w=majority`;
console.log(uri);
const client = new MongoClient(uri);
Console Output
mongodb+srv://accountUser:abc123@mongodb/mydb?retryWrites=true&w=majority
Error
MongoParseError: URI does not have hostname, domain name and tld
What can I be doing wrong?
Solution 1:[1]
You are trying to use an SRV URI when you should be using an ordirary URI.
SRV URIs have the additional security requirements on hostnames (that it contains 3 components minimum).
Remove +srv from your URI.
Solution 2:[2]
1). Go to the database, click edit password and generate a new password.
2). Go to the database, click edit password and give only characters and numbers.
Solution 3:[3]
If the username or password includes the following characters:
: / ? # [ ] @
You should simply replace those characters.
Solution 4:[4]
How to connect to MongoDB Atlas from a NestJS Application:
- Under
DeploymentselectDatabases - Click on your database instance
- Next to the name and status of the instance click
Connect - Click
Connect your application - Under
DRIVERselectNode.js - Under
VERSIONselect2.2.12 or later - Copy the full URI including all of the individual nodes and use that to connect instead
As D. SM said earlier you can't use a URI with +srv in it and rolling back the driver version is the only way to get a connection string generated without +srv.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | D. SM |
| Solution 2 | ouflak |
| Solution 3 | nurmdrafi |
| Solution 4 | fIwJlxSzApHEZIl |
