如何从Postgres中的准备好的语句中选择UUID?

时间:2018-10-25 02:09:25

标签: node.js postgresql

我正在尝试根据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强制转换,但也许我做错了。返回的rowsAct始终是不确定的。

我验证了userUUID变量是否已填充并且是有效的uuid:     console.log(typeof userUUID)//字符串

我在做什么错?我该如何正确地选择其UUID形式的行?

谢谢!

1 个答案:

答案 0 :(得分:0)

在应用::uuid类型强制转换之前,您需要将参数包装在括号中,以便准备好的语句可以正确地插入参数。

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

您也可以将列本身强制转换为text,但是由于查询必须强制转换每一行,因此性能较低。

SELECT * FROM users WHERE uid::text = $1