Skip to content

Instantly share code, notes, and snippets.

@vdeturckheim
Last active March 13, 2016 21:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vdeturckheim/2b2b4391fac17bacf4ff to your computer and use it in GitHub Desktop.
Save vdeturckheim/2b2b4391fac17bacf4ff to your computer and use it in GitHub Desktop.
'use strict';
const Mongoose = require('mongoose');
const validateOptions = require('./lib').validateOptions;
const builConnectionString = require('./lib').builConnectionString;
module.exports.register = function (server, options, next) {
const validation = validateOptions(options);
if (validation.error) {
return next(validation.error);
}
options = validation.value;
const logMe = function (toLog){
server.log(options.logTags, toLog);
};
const connectionString = builConnectionString(options);
if (options.promise) {
let promise = global.Promise;
if (options.promise !== 'native') {
try {
logMe(`trying to use promises implemented by ${options.promise}`);
promise = require(options.promise);
}
catch (err) {
return next(err);
}
}
else {
logMe('using default promises');
}
Mongoose.promise = promise;
}
Mongoose.set('debug' , options.debug);
// see http://mongoosejs.com/docs/api.html#connection_Connection-readyState
if (Mongoose.connection.readyState === 0) {
// do not show user's credentials here !!
logMe(`Connecting to database ${options.hostname}:${options.port}/${options.database}`);
Mongoose.connect(connectionString, (err) => {
// if no error is returned, it will go alright
return next(err);
});
}
else {
return next(`Connection to mongodb was in status ${Mongoose.connection.readyState} which is not 'disconnected'`);
}
};
module.exports.register.attributes = {
pkg: require('./package.json')
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment