U gebruikt een synchrone lus om een asynchrone resource te implementeren. Dat kun je niet doen.
Uw while-lus vult de database-pool en loopt dan opnieuw en blokkeert op getConnection
die vervolgens de hele Node.js-gebeurtenislus blokkeert.
U kunt de async
. gebruiken pakket om asynchrone while-loops uit te voeren.
De async#forever oproep zou doen wat u probeert te bereiken.
Ook lekt uw code databaseverbindingen. U moet de connection.end()
eerst in de callback, tenzij u dezelfde verbinding opnieuw gaat gebruiken. Anders zal een fout een databaseverbinding lekken.
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);
});
});