| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | '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    let dbModelsPath = path.join(SERVERPATH, '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))      })    // Connect    self.onReady = modb.connect(appconfig.db, { useMongoClient: true })    return self  }}
 |