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 _ = require('lodash'); | ||||
| const MongoStore = require('connect-mongodb-session')(session); | ||||
| const MongoClient = require('mongodb').MongoClient; | ||||
| const numeral = require('numeral'); | ||||
| const helmet = require('helmet'); | ||||
| const colors = require('colors'); | ||||
| const cron = require('node-cron'); | ||||
| const common = require('./lib/common'); | ||||
| const mongodbUri = require('mongodb-uri'); | ||||
| const { initDb } = require('./lib/db'); | ||||
| let handlebars = require('express-handlebars'); | ||||
| 
 | ||||
| // Validate our settings schema
 | ||||
|  | @ -324,35 +323,15 @@ app.on('uncaughtException', (err) => { | |||
|     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
 | ||||
|     if(err){ | ||||
|         console.log(colors.red('Error connecting to MongoDB: ' + err)); | ||||
|         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
 | ||||
|     app.dbClient = client; | ||||
|     app.db = db; | ||||
|     app.config = config; | ||||
|     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