连接到mLab时出现Mongoose连接错误

时间:2016-11-24 07:18:58

标签: node.js mongodb

我尝试使用我的系统中的Mongoose连接到mLab,但它仍然因以下错误而失败

 name: 'MongoError',
 message: 'failed to connect to server [server address here] on first connect' }

这是我的代码:

var mongoose = require('mongoose')
var Schema = mongoose.Schema;


var options = {
    server: { socketOptions: { keepAlive: 300000, connectTimeoutMS: 30000 } },
    replset: { socketOptions: { keepAlive: 300000, connectTimeoutMS: 30000 } }
};


mongoose.connect('mongodb://username:password@server.mlab.com:port/appname', options);

var conn = mongoose.connection

conn.on('error', console.error.bind(console, 'connection error:'));

var User = mongoose.model('User', new Schema({
    name: String,
    username: { type: String, required: true, unique: true },
    password: { type: String, required: true },
    admin: Boolean,
    location: String,
    created_at: Date,
    updated_at: Date
}));


var new_user = new User({
    name: 'name',
    username: 'username',
    password: 'password'
});



conn.once('open', function() {
    console.log('started')
    new_user.save(function(err) {
        if (err) throw err;
        console.log('User created!');
    });
});

请告诉我如何成功连接到mLab。

3 个答案:

答案 0 :(得分:1)

我刚才也面临同样的问题。在我的情况下,我通过VPN连接到我的办公室网络,它被阻止了。

解决方案: - 我从VPN断开连接并运行命令进行连接并能够连接。 希望它有所帮助!

答案 1 :(得分:0)

我遇到了通过MongoDB URI连接并与之联系的相同问题。问题是我在我的密码中包含了一个特殊字符(@),并且解析器将其视为分隔符,因此密码被解析错误。他们建议不要在密码中包含任何特殊字符,这样就可以了。

答案 2 :(得分:0)

我有类似的问题。对我来说,错误是由用户ID和密码错误的分隔符

引起的

mongodb://myuseridmypassword@ds112345.mlab.com:12345 / mydb [错] mongodb://myuserid/mypassword@ds112345.mlab.com:12345 / mydb [错] mongodb:// myuserid:mypassword@ds112345.mlab.com:12345 / mydb [right]

当节点应用程序成功连接到MongoDB时,格式不正确的URI导致驱动程序跳过身份验证。当我随后尝试插入记录身份验证失败时