K nasazení asynchronního prostředku používáte synchronní smyčku. To nemůžete.
Vaše smyčka while zaplní fond databáze a poté se znovu zacyklí a zablokuje na getConnection
který pak zablokuje celou smyčku událostí Node.js.
Můžete použít async
balíček pro provádění asynchronních smyček while.
async#forever Call by udělal to, čeho se snažíte dosáhnout.
Z vašeho kódu také unikají databázová připojení. Měli byste vložit connection.end()
první ve zpětném volání, pokud se nechystáte znovu použít stejné připojení. V opačném případě dojde při chybě k úniku databázového připojení.
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);
});
});