使用LIMIT / ORDER BY和pg Postgres NodeJS作为参数

时间:2015-09-06 15:17:02

标签: node.js postgresql pg

我有一个模型,用SORT / PAGE / PER PAGE调用产品 它可以正常工作,数值作为参数,但不是字符串。 这很好用......

params.limit = 12
client.query('SELECT * FROM products LIMIT $1', [params.limit], function(err, result)

然而,这不是......

params.sort = 'product_id'
params.direction = 'DESC'
client.query('SELECT * FROM products ORDER BY $1 $2', [params.sort, params.direction], function(err, result)`

我认为这是因为它将单词DESC包裹为'DESC',但我不知道如何在不将其直接注入字符串的情况下实现此目的。

同样LIMIT传递一个整数总是有效但传递ALL并不是出于同样的原因而假设。

任何帮助都非常有用!

1 个答案:

答案 0 :(得分:0)

我认为您可能需要进行明确的比较:

order by (case when $2 = 'ASC' then $1 end) ASC,
         (case when $2 = 'DESC' then $1 end) DESC