从MongoLab连接到MongoDB服务器的问题

时间:2015-11-05 06:30:28

标签: node.js 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命令确实将某些内容放入数据库。 我在localhost中托管我的服务器,所以我相信这就是问题所在。我的配置中缺少哪些东西?

1 个答案:

答案 0 :(得分:0)

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

在我的情况下,我使用的是版本 3.6.13 ,但当前版本是 4.2.4

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