NodeJS ждет, пока запрос MySQL вставит несколько значений

0

Я пытаюсь вставить данные в цикл, но он не дождался завершения вставки. Мой код выглядит следующим образом:

con.query('INSERT INTO pair_report_detail (studentID1, studentID2, result1, result2) 
VALUES  (\''+studentID[i]+'\', \''+studentID[j]+'\', 
'+result1.toFixed(2)+', '+result2.toFixed(2)+')', function(err, result) {
          if (err) throw err;

          var pair_report_detailID = result.insertId;
          var tokenMatchMarks = 0;
          var matchNo = 0;

          console.log(functions[i].length);
          console.log(functions[j].length);


          var sizeFile1 = functions[i].length;
          for(var z = 0; z < 20; z++)
          {
            if(z == tokenMatch1[tokenMatchMarks])
            {
              matchNo++;
              con.query('INSERT INTO functions (studentID, reportID , content, matchno) 
 VALUES  (\''+studentID[i]+'\', '+pair_report_detailID+', \''+functions[i][z]+'\', '+matchNo+')', function(err, result) {
                if (err) throw err;

                tokenMatchMarks++;
                console.log("Insert funtions");
              }); 
            }else
            {
              con.query('INSERT INTO functions (studentID, reportID , content) VALUES  (\''+studentID[i]+'\', '+pair_report_detailID+', \''+functions[i][z]+'\')', function(err, result) {
                if (err) throw err;
                console.log("Insert funtions");

              }); 
            }
          }
          });

Что я делаю неправильно? Я понимаю, что NodeJS работает async и не ждет завершения какой-либо функции. Но должен быть способ, которым это возможно. Что я делаю неправильно, или что я неправильно понимаю?

Заранее спасибо! ;)

Теги:

1 ответ

0
Лучший ответ

почему бы вам не взглянуть на https://www.npmjs.com/package/mysql2?

Причина в вашем ответе. Nodejs is async и, следовательно, он не дожидается завершения цикла...

В пакете mysql2 содержится mysql с обещаниями, поэтому он значительно поможет вам достичь своей цели... esp. используя async и ждите.

также используйте 'let' вместо 'var' для циклов

Ещё вопросы

Сообщество Overcoder
Наверх
Меню