UNPKG

@srsl/tools

Version:

JavaScript tools for common interfaces

49 lines (39 loc) 1.2 kB
const { MongoClient } = require('mongodb') const mongoose = require('mongoose') module.exports = async (options, models) => { const defaults = { host: options.host || '127.0.0.1', port: options.port || '27017', network: options.network || 'default', mongooseOptions: { useNewUrlParser: true }, onError: (e) => console.error('[Mongo] Connection error:', e), onOpen: (r) => console.log('[Mongo] Connected.', r), maxConnectionRetries: Infinity, } const settings = { ...defaults, ...options, } let numberOfTries = 0 try { await mongoose.connect(`mongodb://${settings.host}:${settings.port}/${settings.network}`, settings.mongooseOptions) const db = mongoose.connection db.on('error', settings.onError) db.once('open', settings.onOpen) const exportObject = { MongoClient, mongoose, db, } if (models) exportObject.models = models return exportObject } catch (e) { numberOfTries += 1 console.log('[Mongo] Failed to connect.') console.error(e) if (numberOfTries >= maxConnectionRetries) { console.error('[Mongo] Max retries reached. Exiting.') process.exit(1) } } }