我在我的React项目中使用了node-postgress包。我试图查询我的PostgreSQL数据库,但由于某种原因,这个特定的过滤器无法使用它们的变量替换。我做错了什么吗?
首先,我的where子句位于:
await client.query(`QUERY HERE`, [VARIABLES])
字符串
导致我出现问题的具体where子句与我的对象History有关。History是一个JSON对象,包含一个记录state,它是一个包含多个状态的数组。我试图查看这个数组中是否存在特定的状态代码,如OH。
($15::text = '' OR h.history -> 'state' @> '["' || $15::text || '"]')
型
虽然这不起作用,但它可以:
($15::text = '' OR h.history -> 'state' @> '["OH"]')
型
有人能帮帮我吗?我很困惑。
1条答案
按热度按时间vulvrdjw1#
在处理JSON数据时,您可能需要使用JSON.stringify()将JavaScript对象显式转换为JSON。编写查询以使用JSON.stringify()作为WHERE子句中的状态数组。在此情况下,$15::jsonb参数将被替换为状态数组的JSON表示。
字符串
通过使用JSON.stringify([“OH”]),可以确保JavaScript数组被正确转换为JSON字符串,该字符串可用于JSONB包含检查(@>)。