我在使用以下示例代码从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]]
还尝试了猫鼬但类似的错误:
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
答案 0 :(得分:21)
没关系,我能够通过使用127.0.0.1而不是localhost来解决问题,不知道为什么我必须使用ip地址。我的tomcat,apache,redis甚至节点服务器都使用localhost而不是mongodb。是否有配置我需要更改以使其使用本地主机?
答案 1 :(得分:7)
尝试在127.0.0.1 localhost
文件中添加/private/etc/hosts
。
答案 2 :(得分:1)
./mongod --bind_ip localhost
答案 3 :(得分:1)
127.0.0.1 xxxxxx(the ip of my computer)
当我在快递项目中运行npm start
时,它出现了类似的错误。在我尝试将127.0.0.1
的映射更改为localhost
之后,它没有错误。
答案 4 :(得分:0)
第一次,我犯了一个明显的错误:mongod
(mongo Server)甚至没有运行。
第二次,我在Windows上运行了服务器(mongod
)和客户端(mongo
);在单独的命令提示中(当然先运行mongo
)。 mongod
和/或其命令提示符被“挂断”(即最后一行仅表示这一点,尽管尝试连接,但最后一行仍然如此:)
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)
哪个有效!
答案 5 :(得分:0)
Github上有人找到了解决方案: 而不是写:
Mongoose.connect(config.database.url);
写:
Mongoose.connect(config.database.url, {
keepAlive: true,
reconnectTries: Number.MAX_VALUE,
useMongoClient: true
});