簡體   English   中英

從pgPromise查詢結果中獲取執行的SQL語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM