![](/img/trans.png)
[英]node-postgres, express with pg-pool, sending data to Angular frontend
[英]How do I parameterize a Postgres array value in Node / pg-pool
我正在使用包含運算符@>
查詢數組列( style text[]
)。 我的原始查詢是:
SELECT * FROM songs WHERE style @> '{Acoustic}'
當我將它放入節點(使用pg-pool )並嘗試對其進行參數化時,值引用周圍的大括號似乎阻止它正常工作。 請注意以下示例:
const style = 'Acoustic';
// this works, but I don't want to in-line like this:
const { rows } = await pool.query(`SELECT * FROM songs WHERE style @> '{` + style + `}'`);
// this fails with 'error: bind message supplies 1 parameters, but prepared statement "" requires 0'
const { rows } = await pool.query(`SELECT * FROM songs WHERE style @> '{$1}'`, [style]);
參數化這個的正確方法是什么?
const { rows } = await pool.query(`SELECT * FROM songs WHERE style @> '{$1}'`, [style]);
此處的 $1 用引號引起來,僅被視為字符串的一部分,而不是可替換的變量。 如果您希望傳入一個標量並將其視為一個數組,您應該可以這樣做:
const { rows } = await pool.query(`SELECT * FROM songs WHERE style @> ARRAY[$1]`, [style]);
另一種方法可能是讓 node.js 直接綁定一個數組(未測試):
const { rows } = await pool.query(`SELECT * FROM songs WHERE style @> $1`, [[style]]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.