У меня есть функция, которая читает данные из базы данных Oracle, файла Excel и выполняет некоторые операции с данными, а затем сохраняет данные результатов в файле Excel.
const app = require('./index.js');
app('ZR_CUSTOMER_INVOICES Functional Specification')
const azureFunction = require('./connections/azureConnection');
const idsFunction = require('./connections/idsconnection');
const xlsFunction = require('./connections/readExcel');
const writeToExcel = require('./connections/writeToExcel');
var azureData;
var idsData;
var xlData;
var xlColumns;
var azureColumns;
var idsColumns;
var resultData;
var table_name;
var file_name='';
function app(fileName){
file_name=fileName
xlsFunction(file_name,xlCallback);
}
function xlCallback(xlresult,tName){
table_name=tName;
xlData=xlresult
xlColumns=xlData.map((a,i)=>{
return a.Columns
})
var azquery=`exec sp_columns ${table_name}`
azureFunction(azquery,acallback);
}
function acallback(azresult){
// let table_name=xlData[0]['View Name']
let idsquery=`select COLUMN_Name from ids_columns where table_id = (select table_id from ids_tables where table_name ='${table_name}')`;
azureData=azresult;
azureColumns=azureData.map((a,i)=>{
return a.value
})
idsFunction(idsquery,icallback);
}
function icallback(idsresult){
idsData=idsresult;
idsColumns=idsresult.rows.map((a,i)=>{
return a[0]
})
finalFunction()
}
function finalFunction(){
resultData=xlData.map((a,i)=>{
if(a.Columns==''){
return;
}
a['inIds?']=idsColumns.includes(a.Columns);
a['inAzure?']=azureColumns.includes(a.Columns);
return a;
})
resultData=resultData.filter((a,i)=>{
return a!==undefined;
})
// console.log(resultData);
writeToExcel(resultData,file_name)
console.log('done');
}
module.exports=app;
это работает нормально.
но если я дважды вызову функцию из приложения.
const app = require('./index.js');
app('ZR_CUSTOMER_INVOICES Functional Specification')
app('ZR_CONTACTS Functional Specification')
Я получаю вывод, как только один раз, а затем элемент управления также не прерывается.
Я думаю, что есть некоторые проблемы с подключением к базе данных, поэтому я хочу сделать это синхронно и проверить.
// комментируйте меня, если вам нужен какой-либо код.