【发布时间】:2018-08-02 18:23:28
【问题描述】:
我正在使用带有 Sequelize 的 Node/Express 来查询我的 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 删除它们?
【问题讨论】:
-
您确定没有在应用程序代码中添加双引号
-
很有可能。虽然该列是 JSON 类型,但我设置的实际数据是一个数组。进行该转换时,JavaScript 会在其中添加双引号吗?
标签: node.js sqlite sequelize.js