Я пытаюсь переместить большой объем данных из базы данных mysql (количество больше максимального размера запроса), и для этого вам нужно запустить его через цикл в кусках. Проблема, с которой я сталкиваюсь, заключается в том, что даже при небольшом размере выборки из 50 записей я постоянно пропускаю около половины из них, поскольку кажется, что соединение закрывается до завершения цикла. Фрагмент кода, у меня возникли проблемы с ниже:Как я могу остановить соединение от закрытия раньше?
for(var j = 0; j < maxNum; j+=increment){
// populates the array that can be used to find the mods that have been purchased
console.log("START = " + j + " END = " + (j+increment));
con.query("SELECT * FROM sometable WHERE id BETWEEN " + j
+ " AND " + (j + increment), function(err, rows, fields){
if(!err){
console.log("ROWS = " + rows.length);
for(var a = 0; a < rows.length; a++){
arrayOfObjs.push(rows[a]);
console.log(rows[a].ID);
// If the inner loop is at the end and the while loop is about to end this cycle
if((a + 1 == rows.length) && ((userCounter + increment - 1) > maxNum)) {
// Loop through all the user objects and if it has records, add it to that item
for(var b = 0; b < arrayOfUsers.length; b++){
arrayOfUsers[b].objs = returnObjById(b, arrayOfMods);
// If the loop is ending
if(b+1 == arrayOfUsers.length){
done1 = true;
// temp force close
shutDown()
}
}
}
}
}
else{
console.log(err);
}
})
}
MAXNUM должен представлять общее количество пользователей в таблице в целом, и прирост будет размер кусков. Функция returnObjs ничего не вызывает и представляет собой простой переключатель, который не влияет на функциональность. Функция shutdown - это конец соединения mysql с process.exit для обратного вызова. Эта функция - это то, что заканчивает сценарий до его завершения, но поскольку я новичок в Node, я не знаю, как я мог бы настроить это, чтобы гарантировать, что это не будет продолжаться. Любые предложения были бы оценены, поскольку это делается частично как способ изучения Узел, так как это не составит труда сделать на языке, с которым я знаком.
Возможно, из-за вашего значения тайм-аута – Drew