【发布时间】:2020-02-03 20:57:45
【问题描述】:
我正在尝试返回 node-postgres 查询的结果并将其存储在变量中。我可以很好地管理 console.log,但找不到返回结果的方法,以便在查询方法之外可以访问它。我不知所措,并且知道我必须遗漏一些明显的东西(或多个明显的东西),因为如果不可能做到这一点,我就不明白 node-postgres 的意义,因为我将永远能够要做的是将我的结果记录到控制台。
我已经尝试了下面的代码以及使用 Promise 的版本,并且都收到了相同的结果,“未定义”。 else 中的 console.log 工作正常,但返回不会使函数的其余部分可以访问结果。在下面的代码中,我的返回返回为“未定义”,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在查询完成之前返回。在返回结果之前,您必须以某种方式等待结果来自 DB。阅读有关 async/await 的信息,或者可能返回一个通过数据库结果解决的 Promise。
标签: node.js node-postgres