I am trying to save data in mongodb through post method and using mongodb atlas with node.js but it keeps giving me an error, I provided correct connection string and correct password. Please help in regarding this issue. Thanks.
Here is the code:
const mongoose = require('mongoose');
const monngodb_url="mongodb+srv://maarij:asdf360@cluster0-j7wis.mongodb.net/authDB?retryWrites=true&w=majority";
mongoose.connect(monngodb_url, {useNewUrlParser: true,useUnifiedTopology: true}).then(()=>{
console.log("mongodb is connected");
}).catch((error)=>{
console.log("mondb not connected");
console.log(error);
});
Here is the error:
server is running on port 3000
{ name: 'myName', email: 'e@mail.com', password: 'abcdefg' }
mondb not connected
MongooseError [MongooseServerSelectionError]: connection <monitor> to 52.6.250.237:27017 closed
at new MongooseServerSelectionError (D:\react-native\reactNativeBackend\node_modules\mongoose\lib\error\serverSelection.js:22:11)
at NativeConnection.Connection.openUri (D:\react-native\reactNativeBackend\node_modules\mongoose\lib\connection.js:808:32)
at Mongoose.connect (D:\react-native\reactNativeBackend\node_modules\mongoose\lib\index.js:333:15)
at Object.<anonymous> (D:\react-native\reactNativeBackend\db\db.js:5:10)
at Module._compile (internal/modules/cjs/loader.js:955:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
at Module.load (internal/modules/cjs/loader.js:811:32)
at Function.Module._load (internal/modules/cjs/loader.js:723:14)
at Module.require (internal/modules/cjs/loader.js:848:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.<anonymous> (D:\react-native\reactNativeBackend\index.js:4:19)
at Module._compile (internal/modules/cjs/loader.js:955:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
at Module.load (internal/modules/cjs/loader.js:811:32)
at Function.Module._load (internal/modules/cjs/loader.js:723:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10) {
message: 'connection <monitor> to 52.6.250.237:27017 closed',
name: 'MongooseServerSelectionError',
reason: TopologyDescription {
type: 'ReplicaSetNoPrimary',
setName: null,
maxSetVersion: null,
maxElectionId: null,
servers: Map {
'cluster0-shard-00-01-j7wis.mongodb.net:27017' => [ServerDescription],
'cluster0-shard-00-02-j7wis.mongodb.net:27017' => [ServerDescription],
'cluster0-shard-00-00-j7wis.mongodb.net:27017' => [ServerDescription]
},
stale: false,
compatible: true,
compatibilityError: null,
logicalSessionTimeoutMinutes: null,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
commonWireVersion: null
},
[Symbol(mongoErrorContextSymbol)]: {}
}
I had the same issue but I success to fix it. On your MongoDB account, check the IP you choose to connect your application.
If you start working on a initial IP and try to work using another IP address it won't work.
In mongoDB:
NetworkAccess/ (verify the IP you registered is the same than this your actually used). You can select : Add IP address
Did you have this line in your index.js app.use(cors())?
Try to delete this line and delete everything that involves cors.
If this don't work try the Mehdi Berra's solution
You Can Solve This Problem By Going into Your Network Access Panel
Then Click Add IP Address
& Then Fill 0.0.0.0/0 Then Click Confirm
Don't Do this in Production But in Development, it will Work
I had this similar problem. 'Go to network access' -> 'IP whitelist' -> you can only connect to your cluster from those IP addresses , so if your IP is not present in that list
Then Click the 'Add IP address' Button-> in there click the button 'Add your current IP address'.
This is probably because the IP of your machine changes, it should not happen in production, but to fix it you need to go to the network access pannel -> Add IP Address and click on "Add this IP address" and it´s going to work, until it changes again.
The most voted solution won't work in most cases. You should first follow the steps of "Aka"'s solution and then remove your node_modules folder. After that, just run npm i to re-install all the dependencies and you should be good to go, considering you have the dependencies registered in the package.json
The main problem here is with Mongodb Atlas. The method that worked for
me was to delete the existing IP address in network section of Mongodb
Atlas, and add it again.
I think if you delete or add a new IP address in network Access tab of your mongodb your Project will not run successfully until you will not refresh server main file(index.js). Because many times I added a new IP address it doesn't work until I refresh index.js
thanks