【问题标题】:MongoHQ Node.js connection URL Conection FailedMongo Node.js 连接 URL 连接失败
【发布时间】:2013-01-25 18:32:35
【问题描述】:

当使用具有这些设置和代码的本地开发 MongoDB 时,我有一个有效的 Node.js 应用程序设置并且运行良好:

var MongoDB     = require('mongodb').Db;
var Server      = require('mongodb').Server;

var dbPort      = 27017;
var dbHost      = 'localhost';
var dbName      = 'my-db';

var db = new MongoDB(dbName, new Server(dbHost, dbPort, {auto_reconnect: true}), {w: 1});
db.open(function(e, d){
if (e) {
    console.log(e);
}   else{
    console.log('connected to database :: ' + dbName);
}
});

但是,当我尝试连接 MongoHQ URI 时,我收到连接失败错误。

我不确定如何使用 URI:mongodb://username:password@linus.mongohq.com:10022/my-db 使用上面的代码。

编辑: 下面是我的代码的下一部分,展示我如何使用 db 变量,以防它有助于解决问题:

var accounts = db.collection('accounts');

/* login validation methods */

exports.autoLogin = function(user, pass, callback)
{
accounts.findOne({user:user}, function(e, o) {
    if (o){
        o.pass == pass ? callback(o) : callback(null);
    }   else{
        callback(null);
    }
});
}

exports.manualLogin = function(user, pass, callback)
{
accounts.findOne({user:user}, function(e, o) {
    if (o == null){
        callback('user-not-found');
    }   else{
        validatePassword(pass, o.pass, function(err, res) {
            if (res){
                callback(null, o);
            }   else{
                callback('invalid-password');
            }
        });
    }
});
}

【问题讨论】:

    标签: javascript node.js mongodb mongohq


    【解决方案1】:

    试试这个:

    var mongodb = require('mongodb');
    var url = require('url');
    
    var MONGOHQ_URL = "mongodb://username:password@linus.mongohq.com:10022/my-db";
    
    var connectionUri = url.parse(MONGOHQ_URL);
    var dbName = connectionUri.pathname.replace(/^\//, '');
    
    mongodb.Db.connect(MONGOHQ_URL, function(error, client) {
        if (error) throw error;
    
        console.log('Connected to database :: ' + dbName);
    
        // Some code - Print collection names
        client.collectionNames(function(error, names){
            if(error) throw error;
    
            console.log("Collections");
            names.forEach(function(colData){
                var colName = colData.name.replace(dbName + ".", '')
                console.log(colName);
            });                            
        });
    
    });
    

    【讨论】:

    • 感谢您的回答,我尝试了您建议的代码,但后来在我的代码中出现了很多错误,我已对原始帖子添加了编辑以防万一。
    【解决方案2】:
    var username    = 'username';
    var passwd      = 'password';
    
    
    /* establish the database connection */
    
    var db = new MongoDB(dbName, new Server(dbHost, dbPort, {auto_reconnect: true}), {w: 1});
        db.open(function(e, aa){
        if (e) {
            console.log(e);
        }   else{
               aa.authenticate(username, passwd,function(err2,d){
                 if(d){
                     console.log("Database opened");
                 }
                 else{
                     console.log(err2);
                 }
             });
    
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 2013-10-09
      • 2019-07-13
      • 2018-07-07
      • 1970-01-01
      • 2020-12-30
      • 2015-08-04
      相关资源
      最近更新 更多