Refactor the DB connection to be able to reuse
parent
211da71fd1
commit
bc4a5ee71b
27
app.js
27
app.js
|
@ -7,13 +7,12 @@ const session = require('express-session');
|
||||||
const moment = require('moment');
|
const moment = require('moment');
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const MongoStore = require('connect-mongodb-session')(session);
|
const MongoStore = require('connect-mongodb-session')(session);
|
||||||
const MongoClient = require('mongodb').MongoClient;
|
|
||||||
const numeral = require('numeral');
|
const numeral = require('numeral');
|
||||||
const helmet = require('helmet');
|
const helmet = require('helmet');
|
||||||
const colors = require('colors');
|
const colors = require('colors');
|
||||||
const cron = require('node-cron');
|
const cron = require('node-cron');
|
||||||
const common = require('./lib/common');
|
const common = require('./lib/common');
|
||||||
const mongodbUri = require('mongodb-uri');
|
const { initDb } = require('./lib/db');
|
||||||
let handlebars = require('express-handlebars');
|
let handlebars = require('express-handlebars');
|
||||||
|
|
||||||
// Validate our settings schema
|
// Validate our settings schema
|
||||||
|
@ -324,35 +323,15 @@ app.on('uncaughtException', (err) => {
|
||||||
process.exit(2);
|
process.exit(2);
|
||||||
});
|
});
|
||||||
|
|
||||||
MongoClient.connect(config.databaseConnectionString, {}, (err, client) => {
|
// MongoClient.connect(config.databaseConnectionString, {}, (err, client) => {
|
||||||
|
initDb(config.databaseConnectionString, (err, db) => {
|
||||||
// On connection error we display then exit
|
// On connection error we display then exit
|
||||||
if(err){
|
if(err){
|
||||||
console.log(colors.red('Error connecting to MongoDB: ' + err));
|
console.log(colors.red('Error connecting to MongoDB: ' + err));
|
||||||
process.exit(2);
|
process.exit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// select DB
|
|
||||||
const dbUriObj = mongodbUri.parse(config.databaseConnectionString);
|
|
||||||
let db;
|
|
||||||
// if in testing, set the testing DB
|
|
||||||
if(process.env.NODE_ENV === 'test'){
|
|
||||||
db = client.db('testingdb');
|
|
||||||
}else{
|
|
||||||
db = client.db(dbUriObj.database);
|
|
||||||
}
|
|
||||||
|
|
||||||
// setup the collections
|
|
||||||
db.users = db.collection('users');
|
|
||||||
db.products = db.collection('products');
|
|
||||||
db.orders = db.collection('orders');
|
|
||||||
db.pages = db.collection('pages');
|
|
||||||
db.menu = db.collection('menu');
|
|
||||||
db.customers = db.collection('customers');
|
|
||||||
db.cart = db.collection('cart');
|
|
||||||
db.sessions = db.collection('sessions');
|
|
||||||
|
|
||||||
// add db to app for routes
|
// add db to app for routes
|
||||||
app.dbClient = client;
|
|
||||||
app.db = db;
|
app.db = db;
|
||||||
app.config = config;
|
app.config = config;
|
||||||
app.port = app.get('port');
|
app.port = app.get('port');
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
const MongoClient = require('mongodb').MongoClient;
|
||||||
|
const mongodbUri = require('mongodb-uri');
|
||||||
|
|
||||||
|
let _db;
|
||||||
|
|
||||||
|
function initDb(dbUrl, callback){ // eslint-disable-line
|
||||||
|
if(_db){
|
||||||
|
console.warn('Trying to init DB again!');
|
||||||
|
return callback(null, _db);
|
||||||
|
}
|
||||||
|
MongoClient.connect(dbUrl, { useNewUrlParser: true }, connected);
|
||||||
|
function connected(err, client){
|
||||||
|
if(err){
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
// select DB
|
||||||
|
const dbUriObj = mongodbUri.parse(dbUrl);
|
||||||
|
let db;
|
||||||
|
// if in testing, set the testing DB
|
||||||
|
if(process.env.NODE_ENV === 'test'){
|
||||||
|
db = client.db('testingdb');
|
||||||
|
}else{
|
||||||
|
db = client.db(dbUriObj.database);
|
||||||
|
}
|
||||||
|
|
||||||
|
// setup the collections
|
||||||
|
db.users = db.collection('users');
|
||||||
|
db.products = db.collection('products');
|
||||||
|
db.orders = db.collection('orders');
|
||||||
|
db.pages = db.collection('pages');
|
||||||
|
db.menu = db.collection('menu');
|
||||||
|
db.customers = db.collection('customers');
|
||||||
|
db.cart = db.collection('cart');
|
||||||
|
db.sessions = db.collection('sessions');
|
||||||
|
|
||||||
|
_db = db;
|
||||||
|
return callback(null, _db);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function getDb(){
|
||||||
|
return _db;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getDb,
|
||||||
|
initDb
|
||||||
|
};
|
Loading…
Reference in New Issue