Sequelize使用bulkCreate方法时如何正确同步软删除的行数据
问题原因与修复方案
核心问题
你当前的bulkCreate配置中,updateOnDuplicate仅指定了id字段。当主键id发生冲突时,Sequelize只会更新你在该参数中显式声明的字段,包括deletedAt在内的其余所有字段都会被忽略,因此软删除状态无法同步到ServiceabilityLive表。
修复步骤
- 扩展
updateOnDuplicate的字段范围,将所有需要同步的字段(含deletedAt)加入列表,推荐直接读取原模型的字段列表避免手动枚举遗漏:
// 直接提取Serviceability模型定义的所有字段名 const syncFields = Object.keys(Serviceability.rawAttributes) await ServiceabilityLive.bulkCreate(serviceablities, { updateOnDuplicate: syncFields })
- 确认
ServiceabilityLive模型配置与原表对齐:- 已开启软删除(配置项
paranoid: true) - 表结构存在
deletedAt字段,且字段类型和Serviceability表完全一致 - 未将
deletedAt加入模型的exclude(字段排除)列表
- 已开启软删除(配置项
内容的提问来源于stack exchange,提问作者Sahil Paudel
相关产品推荐
相关产品推荐

