如何从Sequelize查询中删除双引号?

时间:2018-02-22 18:59:15

标签: node.js sqlite sequelize.js

我正在使用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删除它们呢?

1 个答案:

答案 0 :(得分:0)

能够找到解决此问题的方法。而不是:

[Op.like]: `%${search}%`

只需添加方括号:

[Op.like]: [`%${search}%`]

这样Sequelize将在JSON中进行搜索,同时还会像正常一样搜索其他列类型,例如varchar