Я пытаюсь вставить данные в цикл, но он не дождался завершения вставки. Мой код выглядит следующим образом:
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 и не ждет завершения какой-либо функции. Но должен быть способ, которым это возможно. Что я делаю неправильно, или что я неправильно понимаю?
Заранее спасибо! ;)
почему бы вам не взглянуть на https://www.npmjs.com/package/mysql2?
Причина в вашем ответе. Nodejs is async и, следовательно, он не дожидается завершения цикла...
В пакете mysql2 содержится mysql с обещаниями, поэтому он значительно поможет вам достичь своей цели... esp. используя async и ждите.
также используйте 'let' вместо 'var' для циклов