Como .query()
es un método asíncrono, no podrá return
el valor como devolución de llamada se llamará después el return
se evalúa.
Tendrás que continuar con la callback
patrón:
function query(sql, callback) {
client.connect();
client.query(sql, function (err, rows, fields) {
if (err) {
callback(err);
else
callback(null, rows, fields);
});
client.end();
}
Corrección:Parece client.end()
permitirá que las consultas actuales finalicen antes de que la conexión realmente se cierre.
Sin embargo, llamar a .end()
dentro de la devolución de llamada es un lugar común para muchas API, ya que cortarán cualquier acción pendiente.