我正在使用 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 删除它们呢?
最佳答案
能够找出解决此问题的方法。代替:
[Op.like]: `%${search}%`
只需添加方括号:
[Op.like]: [`%${search}%`]
这样做是为了让 Sequelize 可以在 JSON 中搜索,同时也可以像往常一样搜索其他列类型,例如
varchar
。
关于node.js - 如何从 Sequelize 查询中删除双引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48935255/