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

如何在SequelizeJS中使用$in运算符?报错求助

解决Sequelize中$in运算符报错的问题

这个问题我之前帮同事排查过,核心原因是Sequelize版本更新后的语法变更——从v5版本开始,原来的$in这类前缀式运算符被废弃了,必须改用Op.in来实现IN查询逻辑。下面是具体的解决步骤和注意事项:

步骤1:导入Sequelize的Op运算符

首先得从Sequelize里解构出Op对象,根据你的项目模块类型选对应的写法:

  • CommonJS(Node.js默认规范):
const { Op } = require('sequelize');
  • ES模块(比如用了TypeScript或ES6+配置):
import { Op } from 'sequelize';

步骤2:修改你的查询代码

把原来的$in替换成Op.in,调整后的完整代码片段示例如下:

definedTable.findAll({
  include: [{
    model: definedTableTwo,
    where: {
      zip_code: { [Op.in]: ['12345','67890','15948'] }
    },
    required: true,
    // 你的其他配置项(比如plain、attributes等)
  }]
});

额外排查点(如果替换后仍报错)

  • 检查definedTableTwo中zip_code字段的数据类型:你传入的是字符串数组,如果字段定义的是INTEGER类型,需要把数组值改成数字,比如[12345, 67890, 15948];
  • 如果你还在使用Sequelize v4或更早版本:那原来的$in写法是有效的,这时候要检查是否有拼写错误(比如大小写写错成$In/$IN,Sequelize对运算符大小写敏感)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:33:01