[英]Get executed SQL statement from pgPromise query result
我正在編寫一個使用node和pg-promise對多個postgres數據庫進行查詢的API。
我有興趣從查詢結果中獲取執行的SQL語句。 類似於pg-monitor輸出到控制台。 我已經設置了pg-monitor,並且注意到有一個setLog
方法可以用來獲取所需的數據,但是如果我可以從執行查詢的地方獲取相同的數據,那將是完美的。
這樣做的目的是使API能夠返回查詢結果和元數據(如已執行的SQL)。 這可能嗎? 謝謝!
如果可以從執行查詢的地方獲取相同的數據,那將是完美的。
在這種情況下,您可以自己設置查詢的格式 ,將其記錄下來,然后將其傳遞給查詢方法:
const query = pgp.as.format('SELECT * FROM table WHERE id = $1', 123);
console.log('QUERY:', query);
db.any(query).then().catch()
所有查詢方法都在下面使用此格式化功能。
請注意區別。 當查詢格式出現問題時,任何查詢方法都會在其catch
部分中報告該問題,而如果存在問題,則直接使用as.format
函數會引發錯誤,因為格式是同步的。
更新
使用pg-promise版本8.2.0和更高版本,您甚至可以執行以下操作:
const query = values => {
const q = pgp.as.format('SELECT * FROM table WHERE id = $1', values);
console.log('QUERY:', q);
return q;
};
db.any(query, values).then().catch()
這樣更安全,因為任何與查詢格式相關的錯誤都將由查詢方法處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.