How to connect to mongoDB Atlas using mongoose

The answer in this related post is correct. You should:

  • not mix options with connection string (if done so)
  • make sure your IP you are running on is whitelisted and your network allows connections to Atlas
  • make sure the user has sufficient permissions
  • use the connection string as is provided by atlas and just provide it to

    mongoose.connect(uri);
    

const mongoAtlasUri =
  "mongodb+srv://<username>:<password>@firstcluster.4rc4s.mongodb.net/<dbname>?retryWrites=true&w=majority";

try {
  // Connect to the MongoDB cluster
  mongoose.connect(
    mongoAtlasUri,
    { useNewUrlParser: true, useUnifiedTopology: true },
    () => console.log(" Mongoose is connected"),
  );
} catch (e) {
  console.log("could not connect");
}

const dbConnection = mongoose.connection;
dbConnection.on("error", (err) => console.log(`Connection error ${err}`));
dbConnection.once("open", () => console.log("Connected to DB!"));

MongoError: authentication fails - It means your name or password or dbname is not correct -

uri sample -

const uri =
    "mongodb+srv://<username>:<password>@firstcluster.4rc4s.mongodb.net/<dbname>?retryWrites=true&w=majority";

Suppose username is - najim & password is 1234 & dbname is pets (Note - default dbname is test but you can write whatever you want) then my uri will be with above credentails -

const  mongoAtlasUri =
        "mongodb+srv://najim:[email protected]/pets?retryWrites=true&w=majority";

to connect with moongoose

try {
    // Connect to the MongoDB cluster
     mongoose.connect(
      mongoAtlasUri,
      { useNewUrlParser: true, useUnifiedTopology: true },
      () => console.log(" Mongoose is connected")
    );

  } catch (e) {
    console.log("could not connect");
  }