如何从Postgres中的预处理语句中选择UUID?



我正在尝试根据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(//string

我做错了什么?如何正确选择行形式是 UUID?

谢谢!

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

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

还可以将列本身强制转换为text但它的性能较低,因为查询必须强制转换每一行。

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

相关内容

  • 没有找到相关文章

最新更新