【问题标题】:Is it possible to get the SQL statement together with the error returned by node-postgres?是否可以将 SQL 语句与 node-postgres 返回的错误一起获取?
【发布时间】:2020-06-05 15:10:47
【问题描述】:

我从node-postgres(调用其client.query 方法时)收到类似这样的错误:

{ [Error: syntax error at or near "as"]
 severity: 'ERROR',
 code: '42601',
 position: '60',
 file: 'scan.l',
 line: '1044',
 routine: 'scanner_yyerror' } }

如果我能在错误消息旁边看到有问题的 SQL,那么调试会容易得多。有没有可能以某种方式得到它?

我意识到我可以手动实现这一点(包装 client.query 等),但我感兴趣的是 node-postgres 本身是否可以被强制提供 SQL。

【问题讨论】:

    标签: node.js node-postgres


    【解决方案1】:

    查看源代码(https://github.com/brianc/node-postgres/blob/master/lib/client.js#L331),query 方法返回一个 Query 对象。所以你应该能够做这样的事情:

    var query = client.query('SELECT $1::int AS number', ['1'], function(err, result) {
      if (err) {
        var sql = query.text;
      }
    }
    

    (假设您的回调函数与query 在同一范围内)。

    免责声明:我从未使用过 node-postgres。

    【讨论】:

    • 看起来这是我最好的也是唯一的选择。谢谢。实际上是query.text 用于SQL 和query.values 获取参数值(没有.config)。
    • 已修复。因为我没有运行服务器,所以我实际上无法对其进行测试。
    猜你喜欢
    • 1970-01-01
    • 2021-02-04
    • 2023-03-16
    • 2018-11-24
    • 1970-01-01
    • 2010-12-30
    • 2012-07-07
    • 1970-01-01
    • 2015-01-05
    相关资源
    最近更新 更多