如何在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
相关产品推荐
相关产品推荐

