You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sequelize中Op.or嵌套Op.and不生效,如何实现(A AND B) AND (C OR D OR E OR F)查询?

问题原因

你当前代码中Op.or对应的数组内仅包含一个同时携带C、D、E、F四个条件的对象,Sequelize默认会对单个对象内的多个属性做AND连接,最终解析出的逻辑就变成了A AND B AND C AND D AND E AND F,和预期不符。

正确实现写法

你需要将OR逻辑下的每个条件拆分为Op.or数组中的独立项,有两种常用写法都可以实现需求:

写法1:显式声明全逻辑

where: {
  [Op.and]: [
    { A, B },
    {
      [Op.or]: [
        { C },
        { D },
        { E },
        { F }
      ]
    }
  ]
}

写法2:简化写法(利用Sequelize默认规则)

Sequelize默认会将where顶层的平级条件按AND连接,因此可以省略外层的Op.and声明,代码更简洁:

where: {
  A,
  B,
  [Op.or]: [
    { C },
    { D },
    { E },
    { F }
  ]
}

两种写法最终生成的SQL逻辑均为(A AND B) AND (C OR D OR E OR F),符合你的需求。


内容的提问来源于stack exchange,提问作者Shooting Stars

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 03:24:04