You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在node-postgres中如何正确转义JSONB深度查询的参数

当绕过ORM直接向node-postgres发起查询时,有大量特殊边界问题需要注意。例如你可能已经遇到过小驼峰列(camelCaseColumns)必须放在双引号中,以及参数化类型转换的问题,相关示例代码如下:

client.query(`SELECT id, "authorFirstName", "authorLastName" FROM books WHERE isbn = $1::int`, [1444723448])
client.query(`SELECT id FROM books WHERE "authorLastName" = $1::string`, ['King'])

JSON和JSONB类型带来了另一类特殊问题。需要牢记的核心要点是:$1不只是变量占位符,它是独立信息单元的标识。

假设某张表中characters是JSONB类型的列,以下写法无法正常运行:

client.query(
  `SELECT id FROM books WHERE characters @> ([ {'name': $1::string} ])`,
  ['Roland Deschain']
)

该写法执行失败的原因是,此处的信息单元是JSON对象本身,而不是插入到文本块中的字符串。

内容的提问来源于stack exchange,提问作者Eric_WVGG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:54:03