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

MySQL + Sequelize 如何根据传入的ID数组批量删除对应数据行

解决方案

问题根因

Sequelize 默认不会对直接传入字段的数组做范围匹配,只会取数组第一个元素做等值匹配,所以只会删除第一条数据。要实现批量匹配多个ID,需要使用 Sequelize 内置的Op.in操作符。

调整步骤

  1. 先在当前代码文件顶部引入 Sequelize 操作符对象:
// CommonJS 导入写法
const { Op } = require('sequelize');
// ES Module 导入写法
// import { Op } from 'sequelize';
  1. 修改destroy方法的where查询条件,用Op.in包裹ID数组:
async deletePropertyItems(_, { id }, { models }) {
      try {
        const deletedRows = await models.PropertyItem.destroy({
          where: { id: { [Op.in]: id } },
        });

        if (deletedRows > 0) {
          return {
            success: true,
            message: "Property Item(s) Deleted Successfully!",
            // 可选字段:返回实际删除行数,方便前端做逻辑判断
            deletedCount: deletedRows
          };
        }
        return {
          success: false,
          message: "Operation not successful! No matching records found.",
        };
      } catch (error) {
        throw new Error(error.message);
      }
    },

小提示:原有的Schema定义不需要调整,deletedRows返回值是实际删除的行数,判断时用deletedRows > 0比直接判断布尔值更严谨,避免删除0行时误判为成功

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:54:02