简体   繁体   中英

mongoose not connecting to localhost

I seem to have issues when trying to create a mongoose connection. I am following a book published in 2014 so my immediate response was to check the mongoose docs but they agree that the book gives the correct format. Below is my connection:

var dbURI = 'mongodb://localhost/Loc8r';
mongoose.connect(dbURI);

As soon as I add these lines, I get the following error:

Mongoose connection error: mongodb://127.0.0.1/Loc8r
(node:743) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
(node:743) [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.

If I remove the connection, I have no errors...but that would defeat the purpose of trying to connect to a DB. I also tried substituting localhost in the URI for 127.0.0.1 which is known to solve some issues but I had no luck there either. I am running the localhost on a simple $nodemon command via terminal and nothing else.

Useful info:

  • MongoDB v3.6.3
  • Mongoose v5.0.10
  • Express v4.15.5
  • Node v8.9.4

Help would be appreciated.

Thanks.

try this way

var MongoClient = require('mongodb').MongoClient
  , assert = require('assert');

// Connection URL
var url = 'mongodb://localhost:27017/myproject';

// Use connect method to connect to the server
MongoClient.connect(url, function(err, db) {
  assert.equal(null, err);
  console.log("Connected successfully to server");

  db.close();
});

You are going on the right path but you forgot to put the port on which MongoDB runs, MongoDB runs on the port 27017

Do not forget to start MongoDB server, If you are on mac open terminal and enter mongod and it will start your MongoDB server then run your code it will work fine.

var dbURI = 'mongodb://localhost:27017/Loc8r';
mongoose.connect(dbURI);
mongoose.connection.on("connected", () => {
    console.log("Connected to database");
});
mongoose.connection.on("error", (err) => {
  console.log("Database error:" + err);
});

I apologise for this as I was able to find the solution myself but I guess this may help others some day.

The fault lay with the fact that I only installed MongoDB via Homebrew and I stopped as soon as MongoDB was literally "installed" and considered MongoDB to be "installed". I went back to look at how MongoDB should properly be installed and I noticed that I did not make the directory /data/db and give it its permissions which was an important step.

Once I did this, I ran mongod globally, and nodemon on a separate terminal, locally at the root of the app and it worked completely fine and got a successful message in the console. Every time I tried to connect, it was searching for /data/db which it obviously could not find as I had not made it. But I would not have came to this conclusion if Nikhil had not mentioned running mongod .

To summarise, ensure you follow all installing steps in future.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM