Използвате синхронен цикъл за разгръщане на асинхронен ресурс. Не можете да направите това.
Вашият while цикъл запълва пула на базата данни и след това завършва отново и блокира при getConnection
което след това блокира целия цикъл на събития Node.js.
Можете да използвате async
пакет за изпълнение на асинхронни цикли while.
async#forever обаждането ще направи това, което се опитвате да постигнете.
Освен това вашият код пропуска връзки към базата данни. Трябва да поставите connection.end()
първо в обратното повикване, освен ако не възнамерявате да използвате същата връзка отново. В противен случай грешка ще доведе до изтичане на връзка с базата данни.
pool.getConnection(function (err, connection) {
if (err) throw err;
connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
connection.end(); // return to pool before evaluating error.
if (err) throw err;
console.log('The solution is: ', rows[0].solution);
});
});