如何清除删除实体上的多对多关系表

时间:2018-12-06 18:20:30

标签: node.js sequelize.js

当实体之一被删除时,如何制作自动清除关系表?现在,当我删除任务或在关系表tasks_types_realations中输入类型时,仍然存在具有已删除实体ID的记录,例如,我有ID为1的任务,并且ID为1的类型,在关系表中它将{{1} },并且在删除任务或类型记录之后仍然存在。

任务模型:

|taskId:1|typeId:1|

类型模型:

module.exports = (sequelize, DataTypes) => {
  const Task = sequelize.define('task', {
    id: {
      type: DataTypes.INTEGER,
      primaryKey: true,
      autoIncrement: true
    },
    status: {
      type: DataTypes.ENUM,
      values: ['done', 'pending', 'cancel'],
      defaultValue: 'pending',
      allowNull: false
    },
    date: {
      type: DataTypes.DATE,
      allowNull: false
    },
  })

  Task.associate = models => {
    Task.TaskType = Task.belongsToMany(models.TaskType, {
      as: 'types',
      through: models.TasksTypes
    })
  }

  return Task
}

1 个答案:

答案 0 :(得分:0)

在任务模型中添加:

Task.TasksTypes = Task.hasMany(models.TasksTypes, {
  as: 'typesRelations',
  foreignKey: 'taskId',
  hooks: true,
  onDelete: 'cascade'
})

在类型模型中添加:

TaskType.TasksTypes = TaskType.hasMany(models.TasksTypes, {
  as: 'tasksRelations',
  foreignKey: 'typeId',
  hooks: true,
  onDelete: 'cascade'
})