Du använder en synkron loop för att distribuera en asynkron resurs. Det kan du inte göra.
Din while-loop fyller upp databaspoolen och loopar sedan igen och blockerar getConnection
som sedan blockerar hela Node.js-händelsslingan.
Du kan använda async
paket för att utföra asynkrona while-loopar.
async#forever call skulle göra det du försöker uppnå.
Dessutom läcker din kod databasanslutningar. Du bör lägga in connection.end()
först i återuppringningen om du inte ska använda samma anslutning igen. Annars kommer ett fel att läcka en databasanslutning.
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);
});
});