Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sequelize where子句(JSON列)中使用ILIKE_Json_Node.js_Postgresql_Sequelize.js - Fatal编程技术网

在sequelize where子句(JSON列)中使用ILIKE

在sequelize where子句(JSON列)中使用ILIKE,json,node.js,postgresql,sequelize.js,Json,Node.js,Postgresql,Sequelize.js,我有一个JSON列,其中存储了如下数据- { tag : ["as","bs","cs"] } 我想用ILIKE在这个列中搜索,我相信JSON数据类型只是字符串,所以我使用了如下查询- SELECT * FROM public."Transactions" WHERE tags::text ILIKE '%as%' 上述查询在sql中运行良好 我需要使用sequelize模型来实现此功能,但没有成功 代码我使用的是 let searchQuery = [ {

我有一个JSON列,其中存储了如下数据-

{ tag : ["as","bs","cs"] }
我想用
ILIKE
在这个列中搜索,我相信JSON数据类型只是字符串,所以我使用了如下查询-

SELECT * FROM public."Transactions" WHERE tags::text ILIKE '%as%'
上述查询在sql中运行良好

我需要使用sequelize模型来实现此功能,但没有成功 代码我使用的是

    let searchQuery = [
        {
            payee: {
                [Op.iLike]: '%' + search + '%'
            }
        },
        {
            tags: {
                [Op.iLike]: '%as%'
            }
        }
    ];
给出的错误为

未处理的拒绝SequelizeDatabaseError:运算符不存在: json~~*未知

检查操作符列表-没有
~
-
ILIKE
不适用于json。您必须将json强制转换为文本:

t=# select '{ "tag" : ["as","bs","cs"] }'::json::text ilike '%as%';
 ?column?
----------
 t
(1 row)
或使用本机运算符:

t=# select ('{ "tag" : ["as","bs","cs"] }'::json)->'tag'->>0 = 'as';
 ?column?
----------
 t
(1 row)
或者,如果您是9.5及以上版本的用户,请将其转换为jsonb并使用其强大的运算符:

t=# select '{ "tag" : ["as","bs","cs"] }'::json::jsonb @> '{"tag":["as"]}'::jsonb;
 ?column?
----------
 t
(1 row)