0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2025-12-24 16:22:44 +00:00

Apply review comments

Switched from raw promises to async/await.
Outlined error handling function to reduce amount of nested code.
Added comment about the new file intent.
This commit is contained in:
Alexey Sachkov
2022-01-10 19:25:36 +03:00
parent 6e04535eff
commit e84cd4fe8b
2 changed files with 20 additions and 21 deletions

View File

@@ -79,7 +79,6 @@ const config = require('nconf')
// DB
const DB = require('./server/db.js');
// FIXME: consider implementing error hanlding for a Promise returned by connect
DB.connect(config);
//Account Middleware

View File

@@ -1,3 +1,10 @@
// The main purpose of this file is to provide an interface for database
// connection. Even though the code is quite simple and basically a tiny
// wrapper around mongoose package, it works as single point where
// database setup/config is performed and the interface provided here can be
// reused by both the main application and all tests which require database
// connection.
const Mongoose = require('mongoose');
const getMongoDBURL = (config)=>{
@@ -6,29 +13,22 @@ const getMongoDBURL = (config)=>{
'mongodb://localhost/homebrewery';
};
const disconnect = ()=>{
return Mongoose.close();
const handleConnectionError = (error)=>{
if(error) {
console.error('Could not connect to a Mongo database: \n');
console.error(error);
console.error('\nIf you are running locally, make sure mongodb.exe is running and DB URL is configured properly');
process.exit(1); // non-zero exit code to indicate an error
}
};
const connect = (config)=>{
const resolver = (resolve, reject)=>{
Mongoose.connect(getMongoDBURL(config),
{ retryWrites: false },
(error)=>{
if(error) {
console.error('Could not connect to a Mongo Database.');
console.log(error);
console.error('If you are running locally, make sure mongodb.exe is running.');
// FIXME: do we need to pass 'error' to 'reject'?
return reject();
}
const disconnect = async ()=>{
return await Mongoose.disconnect();
};
return resolve();
});
};
return new Promise(resolver);
const connect = async (config)=>{
return await Mongoose.connect(getMongoDBURL(config),
{ retryWrites: false }, handleConnectionError);
};
module.exports = {