diff --git a/lib/mongodb.js b/lib/mongodb.js index 71611a5..75a2afc 100644 --- a/lib/mongodb.js +++ b/lib/mongodb.js @@ -166,6 +166,8 @@ var MongoDatabank = function(params) { } }); } + } else if (_.has(params, "mongoUrl")) { + bank.mongoUrl = params.mongoUrl; } else { bank.host = params.host || 'localhost'; bank.port = params.port || 27017; @@ -192,50 +194,70 @@ var MongoDatabank = function(params) { // Privileged methods - bank.connect = function(params, callback) { + if (bank.mongoUrl) { + bank.connect = function(params, callback) { + Step( + function() { + Db.connect(bank.mongoUrl, bank.serverOptions, this); + }, + function(err, newDb) { + if (err) throw err; + bank.db = newDb; + if (bank.checkSchema) { + checkBankSchema(callback); + } else { + this(null); + } + }, + callback + ); + } + } else { + bank.connect = function(params, callback) { - var server, replset; + var server, replset; - if (bank.db) { - callback(new AlreadyConnectedError()); - return; - } + if (bank.db) { + callback(new AlreadyConnectedError()); + return; + } - if (bank.rs_name) { - replset = new ReplSet( - _.map(bank.hosts, function(pair) { - return new Server(pair[0], pair[1]); - }), - _.extend(bank.replSetOptions, {rs_name: bank.rs_name})); - bank.db = new Db(bank.dbname, replset, bank.options); - } else { - server = new Server(bank.host, bank.port, bank.serverOptions); - bank.db = new Db(bank.dbname, server, bank.options); - } + if (bank.rs_name) { + replset = new ReplSet( + _.map(bank.hosts, function(pair) { + return new Server(pair[0], pair[1]); + }), + _.extend(bank.replSetOptions, {rs_name: bank.rs_name})); + bank.db = new Db(bank.dbname, replset, bank.options); + } else { + server = new Server(bank.host, bank.port, bank.serverOptions); + bank.db = new Db(bank.dbname, server, bank.options); + } - Step( - function() { - bank.db.open(this); - }, - function(err, newDb) { - if (err) throw err; - if (bank.dbuser) { - bank.db.authenticate(bank.dbuser, bank.dbpass, this); - } else { - this(null); - } - }, - function(err) { - if (err) throw err; - if (bank.checkSchema) { - checkBankSchema(callback); - } else { - this(null); - } - }, - callback - ); - }; + Step( + function() { + bank.db.open(this); + }, + function(err, newDb) { + if (err) throw err; + if (bank.dbuser) { + bank.db.authenticate(bank.dbuser, bank.dbpass, this); + } else { + this(null); + } + }, + function(err) { + if (err) throw err; + if (bank.checkSchema) { + checkBankSchema(callback); + } else { + this(null); + } + }, + callback + ); + }; + } // Disconnect yourself. // callback(err): function to call on completion