Você está usando um loop síncrono para implantar um recurso assíncrono. Você não pode fazer isso.
Seu loop while preenche o pool de banco de dados e, em seguida, faz um loop novamente e bloqueia em
getConnection
que bloqueia todo o loop de eventos do Node.js. Você pode usar o
async
pacote para executar loops while assíncronos. O async#forever call faria o que você está tentando alcançar.
Além disso, seu código está vazando conexões de banco de dados. Você deve colocar o
connection.end()
primeiro no retorno de chamada, a menos que você vá usar a mesma conexão novamente. Caso contrário, um erro vazará uma conexão de banco de dados. 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);
});
});