TypeORM - Order By в raw sql не работает с параметром - PullRequest
0 голосов
/ 11 марта 2019

Я использую entityManager и необработанный запрос для получения данных из базы данных Postgres.У меня есть простой запрос для выбора и заказа по item_id.Если я напишу полный запрос в виде:

let query = "Select * From item ... Order By item_id"; и передам его в entityManager await this.entityManager.query(query), порядок будет работать правильно.

Но если я напишу запрос с параметром:

let query = "Select * From item ... Order By $1"; и передача columnName для упорядочивания в entityManager await this.entityManager.query(query,["item_id"]) упорядочение по полностью игнорируется.

Я также попытался поместить свойство columName в свойство и передать это свойство entityManager: let columnName = "item_id"; await this.entityManager.query(query,[columnName]), но с тем же результатом.

У нас есть PostgreSql в качестве базы данных и версия typeorm ^ 0.2.9

Кто-нибудь знает, где может быть проблема?Или есть ли обходной путь для использования Order By с параметром в raw sql?

Заранее спасибо.

1 Ответ

0 голосов
/ 12 марта 2019

Подготовленные операторы не поддерживаются в пунктах ORDER BY в postgresql. Это потому, что параметры являются значениями, а не идентификаторами.

В качестве обходного пути вы могли бы просто использовать интерполяцию строк в машинописном тексте, но самый безопасный способ выглядит как обертывание оператора SQL в функцию и использование формата в сочетании с подготовленными операторами, как описано здесь .

...