I wrote following code to do that job...but it is calling only once. But i wanted to call multiple times for all object in that list. Is it possible to call any code synchronously in nodejs.
async function processObjs(){
var response = "done";
for(var i = 0; i < objectsToProcess.length; ++i) {
var obj = objectsToProcess[i];
await processObject(obj);
console.log("done for : " + obj);
}
return response;
}
function processObject(objectType){
var filePath = objectType+".csv";
return newPromise(objectType,filePath);
}
function newPromise(objectType,filePath){
return new Promise(function (resolve){
//following code should run synchronously
dataStore= new DataLakeStore(objectType);
let firstPage = true;
console.log("start processing for object :"+objectType);
dataStore.search(qry).forEachPage(page => {
const jsonToWrite = page.hits.map(record => {
return record._source.doc;
});
let csvData;
let flag;
if (firstPage) {
firstPage = false;
flag = "ax+";
csvData = json2csv(jsonToWrite);
}else{
flag = "a";
csvData = json2csv(jsonToWrite, { header: false }) + "\n";
}
fs.writeFileSync(filePath, csvData, { flag });
});
resolve("DONE");
});
}
processObjs().then(function (response) {
console.log("Completed FOR All " + response);
})