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

如何在Sequelize查询中添加enabled为1或2的条件判断?

解决Sequelize中查询enabled字段为1或2的问题

你当前的代码存在问题:JavaScript对象里重复的键会被后面的覆盖,所以where中的enabled:1会被enabled:2覆盖,实际只会查询enabled=2的记录,完全达不到你要的“或”逻辑。

下面提供两种符合需求的写法:

方法1:使用Op.in(推荐,简洁直观)

这种方式对应SQL中的IN语句,和OR逻辑等价,适合值为多个枚举的场景:

const { Op } = require('sequelize'); // 根据项目导入方式调整,ES模块可改用import

const existBusiness = await Business.findOne({
  where: { 
    id, 
    enabled: { [Op.in]: [1, 2] } 
  },
});

生成的SQL条件类似:WHERE id = ? AND enabled IN (1, 2)

方法2:使用Op.or(适合复杂条件组合)

如果需要更灵活的多条件组合,可以用Op.or明确实现“或”逻辑:

const { Op } = require('sequelize');

const existBusiness = await Business.findOne({
  where: { 
    id,
    [Op.or]: [
      { enabled: 1 },
      { enabled: 2 }
    ]
  },
});

生成的SQL条件类似:WHERE id = ? AND (enabled = 1 OR enabled = 2)

注意

如果你的Sequelize版本低于v5,可能需要使用旧语法($in、$or),但目前主流项目已普遍支持Op对象的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:55:48