node.js - 返回node-postgres查询的结果

标签 node.js node-postgres

我正在尝试返回 node-postgres 查询的结果并将其存储在变量中。我可以很好地管理 console.log,但找不到返回结果的方法,以便可以在查询方法之外访问它。我不知所措,并且知道我一定错过了一些明显的东西(或多个明显的东西),因为如果不可能做到这一点,我就不明白node-postgres的意义,因为我将永远能够要做的就是将我的结果记录到控制台。

我尝试了下面的代码以及使用 Promise 的版本,并且都收到相同的结果“未定义”。 else 中的 console.log 工作正常,但 return 并不能使函数的其余部分访问结果。在下面的代码中,我的返回结果为“未定义”,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);

最佳答案

这就是您要找的:

async function selectFrom(data, table, condition) {
  try {
    const res = await pool.query(
      `SELECT ${data} FROM ${table} ${condition}`
    );
    return res.rows[0][data];
  } catch (err) {
    return err.stack;
  }
}

在上一个函数之外:

async function whateverFuncName () {
   var result = await selectFrom('amount','total_nonfarm_monthly_sa', `WHERE month='2019-08-31'`);
   console.log(result);
}

编辑:我没有运行此代码片段,但主要概念非常简单。

关于node.js - 返回node-postgres查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58254717/

相关文章:

node.js - NodeJS V8 将附加参数传递给回调

postgresql - "SELECT * FROM $1"准备语句错误到 : error: syntax error at or near "$1"

lambda - 使用 Ngrok 从 AWS Lambda 连接到本地 PostgreSQL

mysql - 如何多次循环 MYSQL 查询并从 Node.js 中的每个循环查询返回数据?

node.js - DynamoDB 支持的 NodeJS lambda 函数的输入验证

node.js - 使用 pg-promise 的连接池

LEFT OUTER JOIN 查询结果的 Javascript 转换

node.js - Webpack 不能使用__dirname?

javascript - 如何使用通配符在 Mongodb 上进行搜索?

node.js - 如何在express中创建全局 session 变量