Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ECONNREFUSED error when connecting to mongodb from node.js

I know I'm doing some very stupid and noobish, but I'm hoping someone can help me set up a basic database connection to mongodb from node.js on a mac.

I've installed mongodb using homebrew, seems to have worked quite well. I have started the server (mongod) as the locally logged in user, and opened a second terminal and confirmed that I can connect to it by using mongo. When I run mongo I get the message "connecting to: localhost:27017/test" followed by a command prompt. Ran a few commands in the mongo shell everything seems to be working there. Left both terminals open and running.

I've also confirmed that I can reach the web interface at localhost:28017.

I installed node.js and added the mongoose package. Now attempting to connect using a super simple node.js app (also running as locally logged in user):

var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); 

I receive the following error

events.js:72         throw er; // Unhandled 'error' event               ^ Error: connect ECONNREFUSED     at errnoException (net.js:901:11)     at Object.afterConnect [as oncomplete] (net.js:892:19) 

Banging my head against the wall trying to get something so simple to work. What am I missing?

Edit: Here are the logs from mongod. As you can see I tried multiple times and they're all failing rather instantaneously:

Thu Dec  5 08:19:43.700 [initandlisten] MongoDB starting : pid=14412 port=27017 dbpath=/usr/local/var/mongodb 64-bit host=mobadmins-MacBook-Pro-3.local            08:19:43.700 [initandlisten] db version v2.4.8            08:19:43.700 [initandlisten] git version: nogitversion            08:19:43.700 [initandlisten] build info: Darwin mobadmins-MacBook-Pro-3.local 12.4.0 Darwin Kernel Version 12.4.0: Wed May  1 17:57:12 PDT 2013; root:xnu-2050.24.15~1/RELEASE_X86_64 x86_64 BOOST_LIB_VERSION=1_49            08:19:43.700 [initandlisten] allocator: tcmalloc            08:19:43.700 [initandlisten] options: { bind_ip: "127.0.0.1", config: "/usr/local/etc/mongod.conf", dbpath: "/usr/local/var/mongodb", logappend: "true", logpath: "/usr/local/var/log/mongodb/mongo.log", rest: true }            08:19:43.700 [initandlisten] journal dir=/usr/local/var/mongodb/journal            08:19:43.700 [initandlisten] recover : no journal files present, no recovery needed            08:19:43.729 [websvr] admin web console waiting for connections on port 28017            08:19:43.729 [initandlisten] waiting for connections on port 27017            08:22:34.561 [initandlisten] connection accepted from 127.0.0.1:52160 #3 (1 connection now open)            08:22:34.563 [conn3] recv(): message len 1124073472 is too large. Max is 48000000            08:22:34.563 [conn3] end connection 127.0.0.1:52160 (0 connections now open)            08:24:41.298 [initandlisten] connection accepted from 127.0.0.1:52166 #4 (1 connection now open)            08:24:41.304 [conn4] end connection 127.0.0.1:52166 (0 connections now open)            08:25:06.938 [initandlisten] connection accepted from 127.0.0.1:52168 #5 (1 connection now open)            08:25:06.943 [conn5] end connection 127.0.0.1:52168 (0 connections now open)            08:25:18.220 [initandlisten] connection accepted from 127.0.0.1:52172 #6 (1 connection now open)            08:25:18.225 [conn6] end connection 127.0.0.1:52172 (0 connections now open)            08:25:38.811 [initandlisten] connection accepted from 127.0.0.1:52175 #7 (1 connection now open)            08:25:38.816 [conn7] end connection 127.0.0.1:52175 (0 connections now open) 
like image 580
agoldencom Avatar asked Dec 04 '13 21:12

agoldencom


People also ask

Why my database is not connecting in MongoDB?

If you have created a user and are having trouble authenticating, try the following: Check that you are using the correct username and password for your database user, and that you are connecting to the correct database deployment. Check that you are specifying the correct authSource database in your connection string.


2 Answers

ECONNREFUSED error

There are few reasons of this error in node :

  1. Your port is already serving some service so it will refuse your connection.

    go to command line and get pid by using following command

    $ lsof -i:port_number

    Now kill pid by using

    $ kill -9 pid(which you will get by above command)

  2. Your server is not running e.g. in this case please check your mongoose server is running or run by using following command.

    $ mongod

  3. There is also possibility your localhost is not configured properly so use 127.0.0.1:27017 instead of localhost.

like image 200
Anshul Avatar answered Sep 23 '22 13:09

Anshul


OK, this was another case of not being truly forthcoming in the info I posted above. My node.js app was very simple, but I was including another couple lines in my node.js code that apparently caused this issue.

Specifically, I had another variable declared which was calling some other code that made a separate database call using incorrect db info. This is why, when using Xinzz's code, the console log error seemed not to change. It wasn't actually the mongoose.connect command that was throwing the error!

Lesson learned, localize the problem and comment out unrelated code! Sorry guys, I knew this was me being dumb.

like image 21
agoldencom Avatar answered Sep 19 '22 13:09

agoldencom