Като .query() е асинхронен метод, няма да можете да return стойността като обратното извикване ще бъде извикана след return се оценява.
Ще трябва да продължите callback модел:
function query(sql, callback) {
client.connect();
client.query(sql, function (err, rows, fields) {
if (err) {
callback(err);
else
callback(null, rows, fields);
});
client.end();
}
Корекция:Изглежда client.end() ще позволи на текущите заявки да приключат, преди връзката действително да се затвори.
Въпреки това, извикване на .end() вътре в обратното извикване е нещо обичайно за много API, тъй като те ще прекъснат всички чакащи действия.