Как получить значение счетчика в моем вложенном цикле вставки и обновления (exceljs) - PullRequest
0 голосов
/ 10 октября 2019

Проблема в том, что когда я запускаю его, я его console.log: 1. конвертирую xlsx в массив строк 2. напрямую отправляю ответ 3. вставляю функцию обновления, чтобы счетчик и matchcount всегда были 0

Я пытаюсьпреобразовать файл xlsx и вставить его в базу данных, я так прост в экспрессе. я пытаюсь пообещать это, но это очень запутанно (обратный вызов, черт возьми)

 var matchcount = 0; //this is match counter
 var count = 0; //this is counter



await workbook.xlsx.readFile(req.file.path)
.then(workbook => {
    workbook.eachSheet(async (sheet, id) => {
        //convert xslsx to rowarray
        sheet.eachRow(async (row, rowIndex) => {
               if (isOVO) {
                  ///some insert import function///
                  count++
                  for (var i = 0; i < dataKonekthing.length; i++) {                     
                      if (isSameData) {
                          ///insert match data func///

                          ///update import data func///
                          matchcount ++
                       }
                  }         
              }
         })
      })
//send response
  })
.then(() => res.send({desc : `${count} data, ${matchcount} data}`)

Ожидаемый запуск func: 1. преобразовать xlsx в массив строк 2. вставить и обновить func, чтобы счетчик работал 3. наконец отправить ответ

если есть данные xslx, вставляемые в db count ++, и данные совпадают с matchcount ++, поэтому res.send({desc : `${count} data, ${matchcount} data match`}), количество зависит от того, сколько данных xslx вставлено в db, а затем matchcount зависит от того, сколько данных соответствует

...