1

I write a node script module for using in different pages of my application. this script named "parsDbsPostgres.js". then i write a script for calling and using from "parsDbsPostgres.js", this script named "pg.js". the content of this two file is :

// parsDbsPostgres.js

var pg = require('pg');
var pool;
var config = {
    host: 'localhost',
    port: 5432,
    user: 'postgres',
    password: '123321',
    database: 'trading',
    max: 20,
    idleTimeoutMillis: 10000,
    connectionTimeoutMillis: 2000,
}


function getPool(){
        if (pool){ return pool; } // if it is already there, grab it here
        pool = new pg.Pool(config);
        return pool;
}

function doPgQuery(inputArguments={}, callbackFunction){
    // console.log(inputArguments);
    var outputArguments = {};
    if (Object.prototype.toString.call(inputArguments)!='[object Object]'){
        outputArguments['viReturn'] = false;
        outputArguments['viResult'] = 'INPUT_ARGUMENT_NOT_OBJECT';
        callbackFunction(outputArguments);
    }
    if ('mtPool' in inputArguments) { mtPool = inputArguments['mtPool']; }
    if ('mtSqlQuery' in inputArguments) { mtSqlQuery = inputArguments['mtSqlQuery']; }
    try {
        mtPool.connect(function(err, client, done){
            if(err){
                print(err);
                // done(); // releases connection back to the mtPool
                // print(err);
                outputArguments['viCode'] = 1121;
                outputArguments['viReturn'] = false;
                outputArguments['viMessage'] = 'ERROR_POOL_CONNECT';
                outputArguments['viResult'] = err;
                callbackFunction(outputArguments);
            }
            // if(inputArguments.hasOwnProperty('mtSqlQuery')){
            if(mtSqlQuery){
                client.query(inputArguments.mtSqlQuery, function(err, result){
                    if(err){
                        done();
                        // print(err);
                        outputArguments['viCode'] = 1122;
                        outputArguments['viMessage'] = 'ERROR_CLIENT_QUERY';
                        outputArguments['viSql'] = inputArguments.mtSqlQuery;
                        outputArguments['viReturn'] = false;
                        outputArguments['viResult'] = err;
                        callbackFunction(outputArguments);
                    }else{
                        // var lastInsertID = result.rows[0].id;
                        done();
                        // print(result);
                        outputArguments['viCode'] = 1123;
                        outputArguments['viSql'] = inputArguments.mtSqlQuery;
                        outputArguments['viReturn'] = true;
                        outputArguments['viResult'] = result.rows;
                        // console.log(outputArguments);
                        // console.log(inputArguments.mtSqlQuery);
                        // console.log(mtSqlQuery);
                        // console.log('-------------------------------------------------------------------------------------------------------------\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r');
                        callbackFunction(outputArguments);
                    }
                    // print('Client will end now!!!');
                    // client.end();
                });
            }else{
                done();
                outputArguments['viCode'] = 1124;
                outputArguments['viMessage'] = 'ERROR_HASOWN_PROPERTY_QUERY';
                outputArguments['viReturn'] = false;
                outputArguments['viResult'] = err;
                callbackFunction(outputArguments);
            }

        });
    }catch(e){
        // return {stat:0 , error : e } ;
        console.log(e);
    }
};

module.exports = {
  getPool,
  doPgQuery,
}

// pages.js

var parsDbsPostgres = require('./parsDbsPostgres.js');
const process = require('process');
process.on('beforeExit', (code) => {
  console.log('Process beforeExit event with code: ', code);
});




var start = Date.now();
var counter = 10000000000;
var arrErrors = [];
var nErrors = 0;

function loopCallbackInsert(){

    // var mySqlQuery = 'SELECT id FROM binance_signals WHERE id = 1 ORDER BY id DESC LIMIT 1';
    var mySqlQueryINSERT = 'INSERT INTO binance_signals (id) VALUES(DEFAULT) RETURNING id';

    var ellipsed = (Date.now())-start;
    var newEllipsed = '000000000000'+ellipsed;
    newEllipsed = newEllipsed.substr(newEllipsed.length - 10);

        insertInsertArguments = {
            mtPool: parsDbsPostgres.getPool(),
            mtFieldType: 'float',
            mtSqlQuery: mySqlQueryINSERT,
        }

        parsDbsPostgres.doPgQuery(insertInsertArguments, function(callbackInsertFunction){
            counter++;
            if(!callbackInsertFunction.viReturn){
                nErrors++;
                arrErrors.push(callbackInsertFunction);
            }
            console.log('loopCallbackInsert', nErrors, arrErrors, counter, callbackInsertFunction.viResult);
        });
}



function loopCallbackSelect(){
    var mySqlQuerySelect = 'SELECT id,symbol FROM binance_signals ORDER BY id DESC LIMIT 1';
    // var mySqlQuery = 'INSERT INTO binance_signals (id) VALUES(DEFAULT) RETURNING id';

    var ellipsed = (Date.now())-start;
    var newEllipsed = '000000000000'+ellipsed;
    newEllipsed = newEllipsed.substr(newEllipsed.length - 10);

        insertSelectArguments = {
            mtPool: parsDbsPostgres.getPool(),
            mtFieldType: 'float',
            mtSqlQuery: mySqlQuerySelect,
        }

        parsDbsPostgres.doPgQuery(insertSelectArguments, function(callbackSelectFunction){
            counter++;
            if(!callbackSelectFunction.viReturn){
                nErrors++;
                arrErrors.push(callbackSelectFunction);
            }
            console.log('                                                                      loopCallbackSelect', nErrors, arrErrors, counter, callbackSelectFunction.viResult);
        });

}






process.on('exit', (code) => {
  console.log('----------------------- Process exit event with code: ', code, nErrors, arrErrors, '-------------------------------');
});




try {
        var schedule = require('node-schedule');
        var s = schedule.scheduleJob('* * * * * *', function () { // every 1 second
        for (i = 0; i < 1000; i++){
        loopCallbackSelect();
        loopCallbackInsert();
            }
        });
    }catch(e){
        // return {stat:0 , error : e } ;
        console.log(e);
}

unfortunately sometimes i get error "Error: timeout exceeded when trying to connect". how i can solve this error in this two script. thanks

1

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.