我有一个模型,用 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' 但我不知道如何在不将其直接注入(inject)字符串的情况下实现这一点。

同样,LIMIT 传递一个整数总是有效,但我认为传递 ALL 不是出于同样的原因。

任何帮助都会非常有用!

最佳答案

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

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

关于node.js - 使用 LIMIT/ORDER BY 和 pg Postgres NodeJS 作为参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32425052/

10-11 22:14
查看更多