【问题标题】:Sequelize op.like don`t working correctly?Sequelize op.like 不能正常工作?
【发布时间】:2021-10-09 11:56:16
【问题描述】:

我最近在node 遇到了一个数据库工作。

目前我遇到了与Sequelize 请求相关的问题。

有一个简单的代码,op.like 给出了不正确的sql 查询。

我们在请求中使用'\"%delay%\"',而不是%delay%

这是代码片段和来自服务器的响应

const Sequelize = require('sequelize');
const Op = Sequelize.Op;

const shortcodes = await Shortcode.findAll({
      where: {
           project_id: project.id,
             settings: {
                 [Op.like]: `%delay%`
             }
           }
      });

这是此库创建的Sql 查询。

SELECT
  *
FROM
  `shortcodes` AS `shortcode`
WHERE `shortcode`.`project_id` = 1
  AND `shortcode`.`settings` LIKE '\"%delay%\"';

【问题讨论】:

  • 您可以尝试更改 SQL 方言吗?可能是您使用的特定方言的错误。 (另外,这可能行不通,但值得一试...尝试将 `%delay%` 更改为 '%delay%'
  • 尝试使用变量而不是%delay%: [Op.like]: %${delayVar}%
  • @ŠimonKocúrek 不工作。
  • 这听起来像是库中的一个错误......所以你也可以尝试:1)使用较新的版本 2)尝试 MSSQL 方言,因为它与 mysql 最不同
  • @ŠimonKocúrek 在提问之前我也尝试了最新版本。

标签: mysql sql node.js sequelize.js


【解决方案1】:

我在整个互联网上搜索了一个人的github个人资料。

有大致相同的问题。

据我了解,这是Sequelize 库的错误。

这是解决这个问题的方法。

修改和工作代码:

const Sequelize = require('sequelize');
const Op = Sequelize.Op;

const shortcodes = await Shortcode.findAll({
      where: {
           project_id: project.id,
             settings: {
                 [Op.like]: Sequelize.literal('\'%delay%\'')
             }
           }
      });

这是正确生成的sql 查询。

SELECT
  *
FROM
  `shortcodes` AS `shortcode`
WHERE `shortcode`.`project_id` = 1
  AND `shortcode`.`settings` LIKE '%delay%';

这是resource,我从那里读到了所有这些内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-30
    • 2010-11-30
    • 2021-10-02
    • 2017-08-06
    • 2013-11-22
    • 1970-01-01
    • 2013-09-10
    • 2017-04-05
    相关资源
    最近更新 更多