| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | 'use strict'/* global ROOTPATH, appconfig, winston */const modb = require('mongoose')const fs = require('fs')const path = require('path')const _ = require('lodash')/** * MongoDB module * * @return     {Object}  MongoDB wrapper instance */module.exports = {  /**   * Initialize DB   *   * @return     {Object}  DB instance   */  init () {    let self = this    global.Mongoose = modb    let dbModelsPath = path.resolve(ROOTPATH, 'models')    modb.Promise = require('bluebird')    // Event handlers    modb.connection.on('error', err => {      winston.error('Failed to connect to MongoDB instance.')      return err    })    modb.connection.once('open', function () {      winston.log('Connected to MongoDB instance.')    })    // Store connection handle    self.connection = modb.connection    self.ObjectId = modb.Types.ObjectId    // Load DB Models    fs    .readdirSync(dbModelsPath)    .filter(function (file) {      return (file.indexOf('.') !== 0)    })    .forEach(function (file) {      let modelName = _.upperFirst(_.camelCase(_.split(file, '.')[0]))      self[modelName] = require(path.join(dbModelsPath, file))    })    // Using ENV variable?    if (_.startsWith(appconfig.db, '$')) {      appconfig.db = process.env[appconfig.db.slice(1)]    }    // Connect    self.onReady = modb.connect(appconfig.db)    return self  }}
 |