我正在使用Node / Express和Sequelize来查询我的sqlite数据库,当我尝试查询JSON类型的列时,会有多余的双引号("
)被添加到查询中阻止查询从任何返回。
我用来使用Sequelize进行查询的代码:
sites = await Site.findAll({
where: {
[Op.or]: [
'title', 'site_url', 'tags'
].map(key => ({
[key]: {
[Op.like]: `%${search}%`
}
}))
}
});
结果(简化)查询如下所示:
SELECT * FROM `Sites` AS `Site` WHERE (`Site`.`title` LIKE '%min%'
OR `Site`.`site_url` LIKE '%min%' OR `Site`.`tags` LIKE '"%min%"');
请注意双引号:`Site`.`tags` LIKE '"%min%"'
在进行不带双引号的手动查询时,查询按预期工作。那么如何使用Sequelize删除它们呢?
答案 0 :(得分:0)
能够找到解决此问题的方法。而不是:
[Op.like]: `%${search}%`
只需添加方括号:
[Op.like]: [`%${search}%`]
这样Sequelize将在JSON中进行搜索,同时还会像正常一样搜索其他列类型,例如varchar
。