Я пытаюсь вернуть результат запроса node-postgres и сохранить его в переменной. Я могу нормально управлять console.log, но не могу найти способ вернуть результат, чтобы он был доступен вне метода запроса. Я в растерянности и знаю, что мне, должно быть, не хватает чего-то очевидного (или нескольких очевидных вещей), потому что, если это невозможно сделать, я не понимаю смысла node-postgres, поскольку все, что я когда-либо смогу сделать, это записать мои результаты в консоль.
Я пробовал приведенный ниже код вместе с версией, использующей обещания, и оба получили один и тот же результат - undefined. Console.log внутри else работает нормально, но возврат не делает результат доступным для остальной части функции. В приведенном ниже коде мой возврат возвращается как «undefined», как и вместо него console.log.
var selectFrom = function(data, table, condition) {
var queryResult;
pool.query(`SELECT ${data} FROM ${table} ${condition}`, function(err, result) {
if(err) { console.log(err); }
else { queryResult = result.rows[0][data]; }
})
pool.end();
return queryResult;
}
var result = selectFrom('amount','total_nonfarm_monthly_sa', `WHERE month='2019-08-31'`);
console.log(result);
return queryResult
возвращается до того, как запрос будет выполнен. Вам нужно как-то дождаться результатов из БД, прежде чем возвращать их. Прочтите об async / await или, возможно, верните обещание, которое разрешено с результатом из БД. - person ahwayakchih   schedule 06.10.2019