我正在使用entityManager
和原始查询从Postgres数据库中获取数据。我有item_id
对select和order的简单查询。如果我将完整查询写为:
let query = "Select * From item
...
Order By item_id";
并将其传递给entityManager await this.entityManager.query(query)
order by正常工作。
但是,如果我用参数写查询:
let query = "Select * From item
...
Order By $1";
和传递columnName用于对entityManager await this.entityManager.query(query,["item_id"])
order by的排序完全被忽略。
我也尝试将columN name命名为property并将该属性传递给entityManager:qazxsw poi,但结果相同。
我们有PostgreSql作为数据库和typeorm版本^ 0.2.9
有谁知道,问题出在哪里?或者是否有任何workarround在原始sql中使用order by with parametr?
提前致谢。
postgresql中的let columnName = "item_id";
await this.entityManager.query(query,[columnName])
子句不支持预准备语句。这是因为参数是值而不是标识符。
作为一种解决方法,你可以在typescript中使用字符串插值,但最安全的方法就像在函数中包装SQL语句并将ORDER BY
与format所描述的预处理语句结合使用。