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