2
我有一个postgres表与jsonb数组元素,我试图做sql查询来提取匹配的元素。我有一个从Postgres的命令行界面运行原始的SQL查询:使用书架在Postgres JSONB数组元素上执行查询
select * from movies where director @> any (array ['70', '45']::jsonb[])
这将返回我要找的(从电影表中的所有记录的结果,其中导演jsonb元素包含在输入任何元素元件)。
在代码中,['70,'45']的值将是一个动态变量,即。 fixArr和数组的长度未知。
我试图将其构建到我的Bookshelf代码中,但一直未能找到解决用例复杂性的任何示例。我试过以下方法,但他们都不工作:
models.Movies.where('director', '@> any', '(array' + JSON.stringify(fixArr) + '::jsonb[])').fetchAll()
ERROR: The operator "@> any" is not permitted
db.knex.raw('select * from movies where director @> any(array'+[JSON.stringify(fixArr)]+'::jsonb[])')
ERROR: column "45" does not exist
models.Movies.query('where', 'director', '@>', 'any (array', JSON.stringify(fixArr) + '::jsonb[])').fetchAll()
ERROR: invalid input syntax for type json
任何人都可以帮忙吗?