diff --git a/server.js b/server.js index 4c4cb6f63..7b87ae83e 100644 --- a/server.js +++ b/server.js @@ -77,16 +77,10 @@ const config = require('nconf') .file('environment', { file: `config/${process.env.NODE_ENV}.json` }) .file('defaults', { file: 'config/default.json' }); -//DB -const mongoose = require('mongoose'); -mongoose.connect(config.get('mongodb_uri') || config.get('mongolab_uri') || 'mongodb://localhost/naturalcrit', - { retryWrites: false }); -mongoose.connection.on('error', (err)=>{ - console.log('Error : Could not connect to a Mongo Database.'); - console.log(' If you are running locally, make sure mongodb.exe is running.'); - console.log(err); - throw 'Can not connect to Mongo'; -}); +// DB +const DB = require('./server/db.js'); +// FIXME: consider implementing error hanlding for a Promise returned by connect +DB.connect(config); //Account Middleware app.use((req, res, next)=>{ diff --git a/server/db.js b/server/db.js new file mode 100644 index 000000000..7adf3a58f --- /dev/null +++ b/server/db.js @@ -0,0 +1,37 @@ +const Mongoose = require('mongoose'); + +const getMongoDBURL = (config)=>{ + return config.get('mongodb_uri') || + config.get('mongolab_uri') || + 'mongodb://localhost/homebrewery'; +}; + +const disconnect = ()=>{ + return Mongoose.close(); +}; + +const connect = (config)=>{ + const resolver = (resolve, reject)=>{ + Mongoose.connect(getMongoDBURL(config), + { retryWrites: false }, + (error)=>{ + if(error) { + console.error('Could not connect to a Mongo Database.'); + console.log(error); + console.error('If you are running locally, make sure mongodb.exe is running.'); + // FIXME: do we need to pass 'error' to 'reject'? + return reject(); + } + + return resolve(); + }); + + }; + + return new Promise(resolver); +}; + +module.exports = { + connect : connect, + disconnect : disconnect +};