Как выбрать UUID из подготовленного оператора в Postgres? - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь выбрать пользователя на основе UUID:

const client = await this.pg.connect()
const { rowsAct } = await client.query(`SELECT * FROM users WHERE uid=$1`, [
  userUUID
])

Я также пытался без переменной:

const client = await this.pg.connect()
const { rowsAct } = await client.query(`SELECT * FROM users WHERE uid=$1`, [
  '4fcf0ca3-4e26-40a9-bbe5-78ff8fdb6e0f'
])

Я пытался использовать :: uuid casting, но возможноЯ сделал это неправильно.Возвращенное значение rowsAct всегда не определено.

Я проверил, что переменная userUUID заполнена и является действительным uuid: console.log (typeof userUUID) // string

Что я делаюнеправильно?Как я могу правильно выбрать форму строки, это UUID?

Спасибо!

1 Ответ

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

Вам нужно заключить аргумент в скобки перед применением приведения типа ::uuid, чтобы подготовленный оператор мог правильно интерполировать аргумент.

SELECT * FROM users WHERE uid = ($1)::uuid

Вы также можете привести сам столбец к text но он менее производительный, так как запрос должен приводить каждую строку.

SELECT * FROM users WHERE uid::text = $1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...