2017-05-04 36 views
1

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

我可以看到,一个推荐的方法是使用pg-monitor来捕获事件并记录它们,如documentation示例中所述。

没有使用pg-monitor,有没有简单的方法来打印执行准备好的查询。我无法在文档中看到它。

例子:

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

如何打印此查询产生?

SELECT * FROM table WHERE id = 2 

回答

2

有一个简单的方法来只打印所执行的准备查询...

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

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

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

var options = { 
    query: e => { 
    console.log(e.query); 
    } 
}; 
var pgp = require('pg-promise')(options); 
+0

的'options'是真棒。我还没有完全探索它。谢谢。 – mythicalcoder