node.js - 如何从 Sequelize 查询中删除双引号?

标签 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 删除它们呢?

最佳答案

能够找出解决此问题的方法。代替:

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

只需添加方括号:
[Op.like]: [`%${search}%`]

这样做是为了让 Sequelize 可以在 JSON 中搜索,同时也可以像往常一样搜索其他列类型,例如 varchar

关于node.js - 如何从 Sequelize 查询中删除双引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48935255/

相关文章:

node.js - AWS-EB- Node -错误 : Cannot find module '../'

view - 使用 CASE 和 SQLITE 匹配字段

android - android sqlite中的大量数据

c - 如何使用sqlite3_config(SQLITE_CONFIG_HEAP...)?

javascript - Sequelize js,我们如何在迁移中更改列类型

mysql - Sequelize 计数减法

javascript - 在函数外部使用变量

javascript - ESLint 可以帮助你防止 Unhandled-Promise-Rejections 吗?

javascript - 这个简单的串联有什么问题

node.js - NodeJS & Sequelize : showing all the conversation the current user has