@srsl/tools
Version:
JavaScript tools for common interfaces
49 lines (39 loc) • 1.2 kB
JavaScript
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)
}
}
}