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

Sequelize中IN子句匹配数组查询报错,求问题排查

代码问题分析及修复

你的代码存在两个核心问题,还有一个需要补充的异常处理点:

  • SQL语法错误
    原语句里的WHERE project_id IN = ?是错误写法,IN关键字后面不需要等号,正确格式应该是IN (?),用括号包裹待匹配的参数集合。

  • 数组参数传递错误
    你把projectIds数组通过${projectIds}转成了字符串,这会让Sequelize把整个"1,2,3,4"当成单个字符串参数传递,数据库会去匹配project_id等于这个字符串的行,而不是匹配数组里的每个数字。直接传原始数组projectIds即可,Sequelize会自动处理数组类型的替换参数,生成正确的IN子句。

  • 缺失异常捕获
    代码里没有处理异步操作的异常,导致出现UnhandledPromiseRejectionWarning,建议用try/catch包裹异步逻辑来捕获错误。

修复后的代码:

const { sequelize } = require("./db");
const { QueryTypes } = require("sequelize");

const projectIds = [1,2,3,4];

try {
    let rows = await sequelize.query(
        "SELECT * FROM `table_name` WHERE project_id IN (?)",
        {
            replacements: [projectIds],
            type: QueryTypes.SELECT,
        }
    );
    console.log(rows);
} catch (err) {
    console.error(err);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:10:29