我试图连接到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中托管我的服务器,所以我相信这就是问题所在。我的配置中缺少哪些东西?
答案 0 :(得分:0)
解决方案:确保您的Mongoose版本是最新的。
在我的情况下,我使用的是版本 3.6.13 ,但当前版本是 4.2.4
如果您指定了mongoose版本,只需更新package.json
文件并使用命令行npm update