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

Mat*_*nja 9 postgresql node.js pg

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

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

然而这并不...

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

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

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

任何帮助都会非常有用!

Gor*_*off 1

我认为你可能需要做一个明确的比较:

order by (case when $2 = 'ASC' then $1 end) ASC,
         (case when $2 = 'DESC' then $1 end) DESC
Run Code Online (Sandbox Code Playgroud)