]从NodeJS到mongodb

我有问题使用下面的示例代码从NodeJS连接到MongoDB。 我尝试运行有或没有sudo“mongod”,但nodejs代码仍然无法连接。 我能够使用“mongo”成功连接到数据库。

运行于:MAC OS 10.6.8

var mongoClient = require('mongodb').MongoClient; mongoClient.connect("mongodb://localhost:27017/test", function(error, db) { if(!error){ console.log("We are connected"); } else console.dir(error); }); 

运行上面的代码得到以下错误:[错误:无法连接到[localhost:27017]]

也试过mongoose,但类似的错误:

  var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function callback () { console.log("DB connected"); // yay! }); 

输出:连接错误:[错误:无法连接到[localhost:27017]]

这是mongod的日志

 mongod --help for help and startup options 2014-07-11T23:33:47.843-0700 kern.sched unavailable 2014-07-11T23:33:47.849-0700 [initandlisten] MongoDB starting : pid=29942 port=27017 dbpath=/data/db 64-bit host=usc8bcc8a0d0b1 2014-07-11T23:33:47.849-0700 [initandlisten] 2014-07-11T23:33:47.849-0700 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000 2014-07-11T23:33:47.849-0700 [initandlisten] db version v2.6.3 2014-07-11T23:33:47.849-0700 [initandlisten] git version: nogitversion 2014-07-11T23:33:47.849-0700 [initandlisten] build info: Darwin usc8bcc8a0d0b1 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun 7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_49 2014-07-11T23:33:47.849-0700 [initandlisten] allocator: system 2014-07-11T23:33:47.849-0700 [initandlisten] options: {} 2014-07-11T23:33:47.850-0700 [initandlisten] journal dir=/data/db/journal 2014-07-11T23:33:47.850-0700 [initandlisten] recover : no journal files present, no recovery needed 2014-07-11T23:33:47.901-0700 [initandlisten] waiting for connections on port 27017 2014-07-11T23:34:47.901-0700 [clientcursormon] mem (MB) res:48 virt:2810 2014-07-11T23:34:47.901-0700 [clientcursormon] mapped (incl journal view):320 2014-07-11T23:34:47.901-0700 [clientcursormon] connections:0 

没关系,我能够通过使用127.0.0.1而不是本地主机来解决问题,不知道为什么我必须使用IP地址。 我的Tomcat,Apache,Redis,甚至节点服务器都使用本地主机,但不是mongodb。 是否有configuration我需要改变,使其使用本地主机工作?

尝试在/private/etc/hosts文件中添加127.0.0.1 localhost

  • 如果您的mongoDB 不能正常closures,可能会发生此问题Mongodb无法连接到本地主机,但可以连接到本地主机的IP地址
  • 使用follwoing命令启动您的mongoDB服务器,然后尝试相同./mongod --bind_ip localhost

第一次,我犯了一个明显的错误,即mongod (mongo服务器)甚至没有运行。

第二次,我在Windows上运行了服务器( mongod )和客户端( mongo ); 在单独的命令提示符(当然mongo首先运行)。 mongod和/或其命令提示符被“挂断”(即最后一行只是说这个,最后一行仍然是这样,尽pipe尝试连接:)

 2017-06-20T12:31:02.937-0600 I NETWORK [thread1] waiting for connections on port 27017 

我点击命令提示符按空格键“踢它”,命令提示符打印这样的行:

 2017-06-20T12:31:48.517-0600 I NETWORK [thread1] connection accepted from 127.0.0.1:50260 #1 (1 connection now open) 

哪个工作!

是的,我也遇到了这个错误,我的主机是如下: 127.0.0.1 xxxxxx(the ip of my computer) ,当我运行npm start在快速项目,它有这样的错误。 我试图将127.0.0.1映射到localhost ,没有错误。

Github上的某个人find了一个解决scheme:不写:

 Mongoose.connect(config.database.url); 

写:

 Mongoose.connect(config.database.url, { keepAlive: true, reconnectTries: Number.MAX_VALUE, useMongoClient: true }); 

(来源https://github.com/Automattic/mongoose/issues/5399