使用pg-promise记录特定的postgresql查询

时间:2017-05-04 10:46:56

标签: node.js postgresql pg-promise

我正在使用带有Nodejs的pg-promise包来执行PostgreSQL查询。我想看看执行的查询。只有特定的查询,比如说,我只想调试一个查询。

我可以看到一种推荐的方法是使用pg-monitor来捕获事件并按照示例documentation中提到的那样记录它们。

不使用pg-monitor,是否有一种简单的方法可以打印执行的准备好的查询。我在文档中看不到它。

示例:

db.query("SELECT * FROM table WHERE id = $/id/", {id: 2})

如何打印此查询以产生?

SELECT * FROM table WHERE id = 2

1 个答案:

答案 0 :(得分:7)

  

有一种简单的方法可以打印执行的准备好的查询...

一般的查询 - 是的,见下文。 A Prepared Query - 不,根据定义,这些是在服务器端格式化的。

const query = pgp.as.format('SELECT * FROM table WHERE id = $/id/', {id: 2});
console.log(query);
db.any(query).then(...).catch(...)

如果您想打印模块执行的所有查询,而不使用pg-monitor,只需在初始化库时添加事件query处理程序:

const initOptions = {
  query(e) {
    console.log(e.query);
  }
};
const pgp = require('pg-promise')(initOptions);