Executando verificação de segurança...
1

O arquivo não está sendo atualizado quando o usuário clica no botão de download.

Olá pessoal, boa noite, como vocês estão?
Estou construindo um serviço web que pode fazer cotações e essas são feitas em uma planilha excel, mas quando eu mudo o produto que eu quero cotar o arquivo só carrega quando o usuário baixar duas vezes, tentei implementar funções assíncronas para fazer o arquivo esperar para que a requisição fosse enviada, mas não funcionou.

Vocês poderiam me ajudar ?
Vou deixar o código abaixo.

Código abaixo trata os dados que quero enviar em um arquivo excel

let run = (structure) => {
  async function getTreatDatasFromAPI() {
    let structureToExcel = await structure;
    await excelPopulate(structureToExcel);
    return structureToExcel;
  }

  let excelPopulate = async (arrayStructureforExcel) => {
    return XlsxPopulate.fromBlankAsync().then((workbook) => {
      // adiciona uma nova aba na planilha
      // let new_sheet = sheet.addSheet("Nova Sheet");

      // Nomeia uma aba da planilha como Planilha1

      const sheet = workbook.sheet(0);
      sheet.name("planilha");
      sheet.row(1).cell(1).value("Part Numbers");
      sheet.row(1).cell(2).value("Quantidade");
      sheet.row(1).cell(3).value("Preços com Fator 3");
      // Arrays que recebem posições das celulas no excel
      let cellColumnA = [];
      let cellColumnB = [];
      let cellColumnC = [];

      for (let i = 2; i <= arrayStructureforExcel.length + 1; i++) {
        cellColumnA.push(`A${i}`);
        cellColumnB.push(`B${i}`);
        cellColumnC.push(`C${i}`);
      }
      sum = 0;
      for (let i = 0; i < cellColumnA.length; i++) {
        sheet.cell(cellColumnA[i]).value(arrayStructureforExcel[i].PartNumber);
        sheet.cell(cellColumnB[i]).value(arrayStructureforExcel[i].Qtd);
        sheet.cell(cellColumnC[i]).value(arrayStructureforExcel[i].Preco);
        sheet
          .row(cellColumnC.length + 2)
          .cell(3)
          .value("Total: " + (sum += arrayStructureforExcel[i].Preco));
      }
      // console.log(
      //   sheet.cell(cellColumnB[i]).value(arrayStructureforExcel[i].Qtd)
      // );
      // return workbook;
      // Salva o arquivo pelo backend direto
      return workbook.toFileAsync("StructureAndPrizes.xlsx");
    });
  };
  getTreatDatasFromAPI();
};

Código abaixo envia o arquivo que preciso atualizar antes de mandar para o usuario

const getAll = async (req, res, next) => {
  try {
    const workbook = await XlsxPopulate.fromFileAsync(
      "StructureAndPrizes.xlsx"
    );
    // console.log(workbook);

    // Realizar edições no workbook, se necessário.
    // workbook.sheet(0).cell("A1").value("foo");

    const data = await workbook.outputAsync();

    // Definir o nome do arquivo de saída.
    await res.attachment("pivot.xlsx");

    // Enviar o workbook como resposta.
    await res.send(data);
  } catch (error) {
    next(error);
  }
};
Carregando publicação patrocinada...