Reputation: 307
I am following these tutorials as I wanted to start with MongoDB and the MERN stack:
Everything was fine until my connection with the database failed. I checked the username/password million times, I copied and pasted the original in case I had some syntax error. This is the error:
(node:10156) UnhandledPromiseRejectionWarning: MongooseServerSelectionError: connection <monitor> to 34.249.129.6:27017 closed
at new MongooseServerSelectionError (C:\Users\Mario\Desktop\ReactProject\MongoDB\mern-tracker\node_modules\mongoose\lib\error\serverSelection.js:22:11)
at NativeConnection.Connection.openUri (C:\Users\Mario\Desktop\ReactProject\MongoDB\mern-tracker\node_modules\mongoose\lib\connection.js:808:32)
at Mongoose.connect (C:\Users\Mario\Desktop\ReactProject\MongoDB\mern-tracker\node_modules\mongoose\lib\index.js:333:15)
at Object.<anonymous> (C:\Users\Mario\Desktop\ReactProject\MongoDB\mern-tracker\server\server.js:51:10)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
(node:10156) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:10156) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
and this is my server.js:
const express = require("express");
const mongoose = require("mongoose");
require("dotenv").config();
const app = express();
const port = process.env.PORT || 5000;
app.use(cors());
app.use(express.json());
const uri = process.env.ATLAS_URI;
mongoose.connect(uri, {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true
});
const connection = mongoose.connection;
// connection.on("error", error => console.error(error));
connection.once("open", uri => {
console.log("MongoDB database connections established");
});
const exercisesRoute = require("./routes/exercises");
const usersRoute = require("./routes/users");
app.use("./exercises", exercisesRoute);
app.use("./users", usersRoute);
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
Since the error is saying about Unhandled promise, what I also tried in my mongoose connection is:
mongoose
.connect(uri, {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true
})
.catch(err => {
console.log(Error, err.message);
})
.then(() => console.log("DB Connected!"))
and that gives me the next error:
{ [Function: Error] stackTraceLimit: 16, prepareStackTrace: undefined } 'connection <monitor> to 52.212.0.151:27017 closed'
DB Connected!
and yet, is not connected.
Sometimes in the error, the connection <monitor> to 52.212.0.151:27017 closed'
changes to 34.249.129.6:27017
Another thing that I tried was deleting the Cluster and creating a new one but the same thing happens I am using windows and node v10.16.3
Hope you guys can help me or advice me.
Upvotes: 6
Views: 21280
Reputation: 1
I understood you error as I also faced it will trying to connect to mongoDB.
This error is simply popping up because your mongoDB local server failed to connect to remote server probably because you don't shut down the file correctly.
How to fix:
c:\program files\mongodb\server\4.2\bin
).That's it , your mongodb server is running again. You can check again in cmd prompt by typing same command.
Upvotes: 0
Reputation: 1722
Try this It seems like you are using MongoDB atlas
mongoose
.connect( uri, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true })
.then(() => console.log( 'Database Connected' ))
.catch(err => console.log( err ));
and go to your MongoDB Atlas
-> NetworkAccess
-> Edit
-> and add Current IP address
it works!!
Upvotes: 19
Reputation: 2061
Try this
mongoose.connect(uri, {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true
}).then(res=>{
console.log("DB Connected!")
}).catch(err => {
console.log(Error, err.message);
})
Upvotes: 1