Как передавать данные одновременно по нескольким запросам в node js? - PullRequest
0 голосов
/ 07 марта 2020

Я использую узел для серверной стороны и mysql для базы данных. Я хочу сделать функцию загрузки, которая дает пользователю возможность загрузить 1 миллион записей в файле .xlsx. Поскольку размер данных слишком велик, мне пришлось go для потокового решения. Но когда несколько пользователей делают запрос на загрузку, загружается файл только для первого пользователя, остальные запросы показывают сбой загрузки из-за сетевой ошибки.

вот код обработчика маршрута: -

app.get('/download_file',(req,res) => {

  res.writeHead(200, {
    'Content-Disposition': 'attachment; filename="file.xlsx"',
    'Transfer-Encoding': 'chunked',
    'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
  });

  let workbook = new Excel.stream.xlsx.WorkbookWriter({ stream: res });
  let worksheet = workbook.addWorksheet('some-worksheet');

  let str = db.query('SELECT * FROM test_data_xl').stream();
  str.on('data', function (d) {
    worksheet.addRow(Object.values(d)).commit(); // format object if required
  });

  str.on('end', function () {
      worksheet.commit();
      workbook.commit();
      console.log('data done');
  });

  str.on('error', function (err) {
      console.log(err);
  });

});

И это просто код для PO C. прикреплен скриншот неудачной загрузки. введите описание изображения здесь

...