node.js - 如何从 Postgres 中的准备好的语句中选择 UUID?

标签 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?

谢谢!

最佳答案

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

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

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

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

关于node.js - 如何从 Postgres 中的准备好的语句中选择 UUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52980326/

相关文章:

linux - 使用 crontab 刷新物化 View

ruby-on-rails - Postgres + Rails - 将所有表从一个模式迁移到另一个模式的正确方法

node.js - PB mongodb、 Mongoose 、node.js

node.js - Visual Studio Code - Node 应用程序的启动参数被双引号括起来

javascript - 如何在同一个端口上使用 ExpressJS 和 Socket.io?

r - 从 SQL 或 R 中的时间戳创建子集

sql - 选择查询以使用时间戳恰好在 3 天之前获取数据

javascript - 即使我仅在 'fs/promises' 内使用 fs 代码,也找不到模块 "getStaticProps()"- next js

javascript - Socket.io - 通过 https 从客户端连接到服务器

sql - 如何正确查询数据库以获取包含列表的结果