mongoDB.js 3.63 KB
const log = require('./log');
var constants = require('./constants');
var MongoClient = require('mongodb').MongoClient;
var config = require('./config');

var connection = {};
connection.reqMongo = async function (req,method, query, collection) {
    
    // console.log(req.id)
    var mongoData = config.get('mongoDB');
    var url = "mongodb://"+mongoData.hopitalIp;
    var database = mongoData.hopitalName;
    var result = await mongoReq(req,url,database,method, query, collection);
    
    return result;
}


function mongoReq(req,url,database,method, query, collection){
    
    var nodeName = "MongoDB"; 
    var funStats = {
        detailSqlQuery : function(query){log.detailSqlQuery(req,method,query);},
        detailSqlResult : function(result, err){log.detailSqlResult(req,method,result || err);},
        addSuccessSummary : function(result){log.addSuccessSummary(req,nodeName,collection,result);},
        addErrorSummary : function(result){log.addErrorSummary(req,nodeName,collection,result);}
    };
    
   

    return new Promise((resolve, reject) => {
        MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
            if (err) {
                console.log(err)                
                resolve(constants.RESPONSECONN.MESSAGE.DBERROR);
            }
            funStats.detailSqlQuery(query);
            var dbInstant = db.db(database).collection(collection);
            switch (method) {
                case constants.METHOD.GET:                
                    dbInstant.find(query, { projection: { _id: 0 } }).toArray(function(err, result) {                   
                    resolve(checkResponse(result,err,funStats));                        
                    });
                    break;
                case constants.METHOD.POST:
                    db.db(database).collection(collection).insertOne(query, function(err, result) {
                    var response = checkResponse(result,err,funStats);
                    delete response.resultData;  
                    resolve(response);
                    });
                    break;
                case "PUT":
                    // db.db(database).collection(collection).find(query, { projection: { _id: 0 } }).toArray(function(err, result) {
                    // db.close();
    
                    // if (err) {
                    //     console.log(err)                    
                    //     resolve(checkResponse(req,{err:err}));
                    // }else
                    //     resolve(checkResponse(req,result));
                    // });
                    break;
                case "DELETE":
                    // db.db(database).collection(collection).find(query, { projection: { _id: 0 } }).toArray(function(err, result) {
                    // db.close();
    
                    // if (err) {
                    //     console.log(err)                    
                    //     resolve(checkResponse(req,{err:err}));
                    // }else
                    //     resolve(checkResponse(req,result));
                    // });
                    break;
                
            }
            db.close();
        });
    });
    
}

function checkResponse(result,err,funStats)
{    
   
    funStats.detailSqlResult(result, err); 
    if(err)
    {
        var returnData = constants.RESPONSECONN.MESSAGE.DBERROR;
        funStats.addErrorSummary(returnData);        
    }
    else
    {        
        var returnData = constants.RESPONSECONN.MESSAGE.SUCCESS;
        returnData.resultData = result;
        funStats.addSuccessSummary(returnData);
    }

    return returnData
}


module.exports = connection;