Du bruger en synkron sløjfe til at implementere en asynkron ressource. Det kan du ikke.
Din while-løkke fylder databasepuljen og går derefter igen og blokerer getConnection
som derefter blokerer hele Node.js hændelsesløkken.
Du kan bruge async
pakke til at udføre asynkrone while-løkker.
async#forever call ville gøre det, du forsøger at opnå.
Din kode lækker også databaseforbindelser. Du skal indsætte connection.end()
først i tilbagekaldet, medmindre du skal bruge den samme forbindelse igen. Ellers vil en fejl lække en databaseforbindelse.
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);
});
});