MongooseError [MongooseServerSelectionError]: connection <monitor> to 52.6.250.237:27017 closed

Viewed 90416

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)]: {}
}
10 Answers

You Can Solve This Problem By Going into Your Network Access Panel

Network Panel

Then Click Add IP Address

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 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

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 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.

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

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

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

double check the connection config vars in Heroku

Hi OP and everyone,

When I landed on this page, I found I had already whitelisted my ip, so that was already solved, but my page was still not connecting to atlas, so I troubleshooted.

If you're having trouble, make sure your config vars has the same key as is in your connection in your code, for instance MONGODB_URI

I had my key different between heroku and my code in one deployment, and it took me a long time to figure out.

Then this time I had my value wrong. After I confirmed my IP address was whitelisted, I looked into the value of the MONGODB_URI, in my current case I didn't have the database AND COLLECTION as part of the value. In Mongodb Atlas when you click connect to the cluster to get the connection string, it will tell you ... mongodb.net/myFirstDatabase ... and to replace the myFirstDataBase with your database name. Mine also needed to include the collection. For instance, mine was this, mongodb.net/booksearch_db missing the collection which made it work seen here mongodb.net/booksearch_db_booksearch

You can also solve by going to Network Access > Edit > ADD CURRENT IP ADDRESS

Related