2015-11-05 44 views
0

我试图连接到由MongoLab创建的MongoDB,但它似乎总是失败。从MongoLab连接到MongoDB服务器的问题

var mongoose = require('mongoose'); 

mongoose.connect('mongodb://<dbuser>:<dbpassword>@ds123854.mongolab.com:12345/the_db'); 

mongoose.connection.on('open', function (ref) { 
    console.log('Connected to mongo server.'); 
}); 
mongoose.connection.on('error', function (err) { 
    console.log('Could not connect to mongo server!'); 
    console.log(err); 
}); 

// check if mongoose connected; 0 = no; 1 = yes; 2 = connecting; 4 = disconnecting 
console.log("mongoose connection: " + mongoose.connection.readyState); 

我得到的日志:

mongoose connection: 2 
Could not connect to mongo server! 
{ [MongoError: auth failed] name: 'MongoError', ok: 0, errmsg: 'auth failed', code: 18 } 

我试图检查密码,所以我没有在我的控制台如下:

> mongo ds123854.mongolab.com:12345/the_db -u <dbuser> -p <dbpassword> 
MongoDB shell version: 3.0.7 
connecting to: ds123854.mongolab.com:12345/the_db 
rs-ds123854:PRIMARY> db.mynewcollection.insert({ "foo": "bar"}) 
WriteResult({ "nInserted" : 1 }) 
rs-ds123854:PRIMARY> db.mynewcollection.find() 
{ "_id" : ObjectId("563c1913504f0ab5cb96d74c"), "foo" : "bar" } 

的用户名和密码似乎正确的,我可以看到insert命令确实将某些东西放入数据库中。 我在本地主机托管我的服务器,所以我认为这是问题所在。我在配置中缺少什么样的东西?

+0

字符串似乎对我很好:https://docs.mongodb.org/manual/reference/connection-string/ 你检查你的mongo接受远程连接吗?你确定你没有在端口或用户/密码上做错吗? –

+0

我相信我正在使用正确的用户/密码。如果我从我的终端连接,它似乎工作正常。麻烦似乎是当试图从我的服务器在本地主机连接 – erad

+0

检查conf,也许你已经绑定本地主机 –

回答

0

解决方案:确保您的Mongoose版本是最新的。

对我来说,我使用的版本3.6.13 ,但目前的版本是4.2.4

如果您指定您的猫鼬版,只需更新您的package.json文件,并使用命令行npm update