From 5b7423cef25d04bf361fd5f916d1dd282a2f96c8 Mon Sep 17 00:00:00 2001 From: Liran Tal Date: Sat, 29 Nov 2014 11:06:16 +0200 Subject: [PATCH 1/4] updating support for mongodb connection string to support special chars for username and password --- config/env/development.js | 8 +++++++- config/env/production.js | 8 +++++++- config/env/secure.js | 8 +++++++- config/env/test.js | 8 +++++++- server.js | 2 +- 5 files changed, 29 insertions(+), 5 deletions(-) diff --git a/config/env/development.js b/config/env/development.js index 2b895b8b..35c08b7e 100644 --- a/config/env/development.js +++ b/config/env/development.js @@ -1,7 +1,13 @@ 'use strict'; module.exports = { - db: 'mongodb://localhost/mean-dev', + db: { + uri: 'mongodb://localhost/mean-dev', + options: { + user: '', + pass: '' + } + }, log: { // Can specify one of 'combined', 'common', 'dev', 'short', 'tiny' format: 'dev', diff --git a/config/env/production.js b/config/env/production.js index c9f28173..a56a48f0 100644 --- a/config/env/production.js +++ b/config/env/production.js @@ -1,7 +1,13 @@ 'use strict'; module.exports = { - db: process.env.MONGOHQ_URL || process.env.MONGOLAB_URI || 'mongodb://' + (process.env.DB_1_PORT_27017_TCP_ADDR || 'localhost') + '/mean', + db: { + uri: process.env.MONGOHQ_URL || process.env.MONGOLAB_URI || 'mongodb://' + (process.env.DB_1_PORT_27017_TCP_ADDR || 'localhost') + '/mean', + options: { + user: '', + pass: '' + } + }, log: { // Can specify one of 'combined', 'common', 'dev', 'short', 'tiny' format: 'combined', diff --git a/config/env/secure.js b/config/env/secure.js index ee2b270a..16400219 100644 --- a/config/env/secure.js +++ b/config/env/secure.js @@ -2,7 +2,13 @@ module.exports = { port: 443, - db: process.env.MONGOHQ_URL || process.env.MONGOLAB_URI || 'mongodb://localhost/mean', + db: { + uri: process.env.MONGOHQ_URL || process.env.MONGOLAB_URI || 'mongodb://localhost/mean', + options: { + user: '', + pass: '' + } + }, log: { // Can specify one of 'combined', 'common', 'dev', 'short', 'tiny' format: 'combined', diff --git a/config/env/test.js b/config/env/test.js index 22c47c9f..1d42d4e7 100644 --- a/config/env/test.js +++ b/config/env/test.js @@ -1,7 +1,13 @@ 'use strict'; module.exports = { - db: 'mongodb://localhost/mean-test', + db: { + uri: 'mongodb://localhost/mean-test', + options: { + user: '', + pass: '' + } + }, port: 3001, log: { // Can specify one of 'combined', 'common', 'dev', 'short', 'tiny' diff --git a/server.js b/server.js index 8f541632..b996fcaf 100755 --- a/server.js +++ b/server.js @@ -13,7 +13,7 @@ var init = require('./config/init')(), */ // Bootstrap db connection -var db = mongoose.connect(config.db, function(err) { +var db = mongoose.connect(config.db.uri, config.db.options, function(err) { if (err) { console.error(chalk.red('Could not connect to MongoDB!')); console.log(chalk.red(err)); From 75c40bd5a3cdc517b86fce1560a033582752e316 Mon Sep 17 00:00:00 2001 From: Liran Tal Date: Sat, 29 Nov 2014 12:17:44 +0200 Subject: [PATCH 2/4] updating app startup debug output details for mongodb connection --- server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server.js b/server.js index b996fcaf..29a2fe2b 100755 --- a/server.js +++ b/server.js @@ -37,7 +37,7 @@ console.log('--'); console.log(chalk.green(config.app.title + ' application started')); console.log(chalk.green('Environment:\t\t\t' + process.env.NODE_ENV)); console.log(chalk.green('Port:\t\t\t\t' + config.port)); -console.log(chalk.green('Database:\t\t\t' + config.db)); +console.log(chalk.green('Database:\t\t\t' + config.db.uri)); if (process.env.NODE_ENV === 'secure') { console.log(chalk.green('HTTPs:\t\t\t\ton')); } From 9c25722a6d8094e6974ad686a4a0d78ed0fa89e9 Mon Sep 17 00:00:00 2001 From: Liran Tal Date: Sun, 30 Nov 2014 11:34:33 +0200 Subject: [PATCH 3/4] make sure we catch errors connecting to mongodb due to wrongly supplied connection string or others, and show an error --- server.js | 1 + 1 file changed, 1 insertion(+) diff --git a/server.js b/server.js index 29a2fe2b..6a500702 100755 --- a/server.js +++ b/server.js @@ -19,6 +19,7 @@ var db = mongoose.connect(config.db.uri, config.db.options, function(err) { console.log(chalk.red(err)); } }); +mongoose.connection.on('error', console.error.bind(console, chalk.red('MongoDB connection error:'))); // Init the express application var app = require('./config/express')(db); From 4d9d5ecd8598db5a4ea15032e0ce872fba5910ea Mon Sep 17 00:00:00 2001 From: Liran Tal Date: Wed, 3 Dec 2014 10:56:35 +0200 Subject: [PATCH 4/4] updating error handler to exit the node app if we cant establish access to mongodb for some reason --- server.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server.js b/server.js index 6a500702..abb888cf 100755 --- a/server.js +++ b/server.js @@ -19,7 +19,11 @@ var db = mongoose.connect(config.db.uri, config.db.options, function(err) { console.log(chalk.red(err)); } }); -mongoose.connection.on('error', console.error.bind(console, chalk.red('MongoDB connection error:'))); +mongoose.connection.on('error', function(err) { + console.error(chalk.red('MongoDB connection error: ' + err)); + process.exit(-1); + } +); // Init the express application var app = require('./config/express')(db);