I want to access the return value of exported functions but am not able to access the value. Always got undefined output. Below is my coding, In the server.js file I have called my index.js function with the callback function. In index. js file I have defined function body.
server.js file
router.post('/node/express/upload', upload.single("file"), (req, res) => {
  pool.connect((err, client, release) => {
    // const companyname = req.body.companyname;
    // const ecomplatform = req.body.ecomplatform;
    const {companyname,ecomplatform,voucher} = req.body;
    const filename = req.file.filename;
    var workbook = XLSX.readFile('./public/'+filename);
    var sheet_name_list = workbook.SheetNames;
     
      pool.query(
        `SELECT xmlschema FROM company WHERE companyname = '${companyname}' AND ecomplatform = '${ecomplatform}' AND vouchertype = '${voucher}'`,
        (err,result) => {
          try {
            if (err) {
              logger.error(err);
              throw err;
            }
            const xmlschema = result.rows
            var final;
            final =  abc.addInvoice(workbook,sheet_name_list,xmlschema,function(response) {
              console.log('hello')
              final = response
              return response
            })
            
            console.log(final)
            res.status(201).send({msg:'Ok'})
            
          } catch (error) {
           
            next(error);
          }
        },
      );
  });
});
index.js file
function addInvoice(workbook,sheet_name_list,xmlschema,callback) {
  
  //count number of rows in xlsx file
  let count = [];
  for (var sheetIndex = 0; sheetIndex < sheet_name_list.length; sheetIndex++) {
    var worksheet = workbook.Sheets[sheet_name_list[sheetIndex]];
    var range = XLSX.utils.decode_range(worksheet["!ref"]);
    var num_rows = range.e.r - range.s.r + 1;
    count.push({
      data_count: num_rows,
    });
  }
  sheet_name_list.forEach(function (y) {
    var worksheet = workbook.Sheets[y];
    var headers = {};
    var data = [];
    for (z in worksheet) {
      if (z[0] === "!") continue;
      var tt = 0;
      for (var i = 0; i < z.length; i++) {
        if (!isNaN(z[i])) {
          tt = i;
          break;
        }
      }
      var col = z.substring(0, tt);
      var row = parseInt(z.substring(tt));
      var value = worksheet[z].v;
      //store header names
      if (row == 1 && value) {
        headers[col] = value;
        continue;
      }
      if (!data[row]) data[row] = {};
      data[row][headers[col]] = value;
    }
    var voucher,order_id,date,orderstate,seller_gst,product_id,quantity,voucher_no,product_name;
    let IGST, CGST, amount, famount, agst_ref, freturnamount, eventsubtype;
    let schema = xmlschema.map((item) => item.xmlschema)
 
    voucher = data.map((item) => item.Event_Type);
    
    order_id = data.map((item) => item.Order_ID);
    date = data.map((item) => item.Order_Date);
    orderstate = data.map((item) => item.Customer_Billing_State);
    seller_gst = data.map((item) => item.Seller_GSTIN);
    product_id = data.map((item) => item.SKU);
    quantity = data.map((item) => item.Item_Quantity);
    voucher_no = data.map((item) => item.Buyer_Invoice_ID);
    product_name = data.map((item) => item.Product_Title);
    IGST = data.map((item) => item.IGST_Amount);
    CGST = data.map((item) => item.CGST_Amount);
    amount = data.map((item) => item.Taxable_Value);
    famount = data.map((item) => item.Buyer_Invoice_Amount);
    agst_ref = data.map((item) => item.Order_Item_ID);
    freturnamount = data.map((item) => item.Final_Invoice_Amount);
    eventsubtype = data.map((item) => item.Event_Sub_Type);
    
    for (i = 2; i <= num_rows; i++)
    primeschema(
        voucher[i],
        date[i],
        orderstate[i],
        order_id[i],
        seller_gst[i],
        product_id[i],
        quantity[i],
        voucher_no[i],
        product_name[i],
        IGST[i],
        CGST[i],
        amount[i],
        famount[i],
        agst_ref[i],
        freturnamount[i],
        eventsubtype[i],
        schema,function(response){         
         return  callback(response)
        }
      );
  });
}
module.exports = {addInvoice};
I have used the callback function when a task gets completed and is an asynchronous equivalent for a function. please help me guys with how to access the exported function return value.
