'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
Deployment
selectDatabases
- Click on your database instance
- Next to the name and status of the instance click
Connect
- Click
Connect your application
- Under
DRIVER
selectNode.js
- Under
VERSION
select2.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 |