Sequelize – 级联删除3个表

我试图级联删除数据通过3关联的表中sequelize。

我创build的模型如下。 架构

用户型号:

var Sequelize = require('sequelize'); module.exports = function(sequelize, DataTypes) { var Users = sequelize.define('Users', { id: { type: Sequelize.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true }, name: { type: DataTypes.STRING, allowNull: false }, createdAt: { type: DataTypes.DATE, defaultValue: DataTypes.NOW }, updatedAt: DataTypes.DATE }, { classMethods: { associate: function(models) { Users.belongsToMany(models.Books, { through: { model: models.History }, foreignKey: 'userId', onDelete: 'cascade' }); } } }); return Users; }; 

书籍型号:

 var Sequelize = require('sequelize'); module.exports = function(sequelize, DataTypes) { var Books = sequelize.define('Books', { id: { type: Sequelize.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true }, name: { type: DataTypes.STRING, allowNull: false }, createdAt: { type: DataTypes.DATE, defaultValue: DataTypes.NOW }, updatedAt: DataTypes.DATE }, { classMethods: { associate: function(models) { Books.belongsToMany(models.Users, { through: { model: models.History }, foreignKey: 'bookId', onDelete: 'cascade' }); } } }); return Books; }; 

历史模式:

 var Sequelize = require('sequelize'); module.exports = function(sequelize, DataTypes) { var History = sequelize.define('History', { id: { type: Sequelize.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true }, userId: { type: DataTypes.INTEGER, allowNull: false }, bookId: { type: DataTypes.INTEGER, allowNull: false }, from: { type: DataTypes.DATE, allowNull: false }, to: { type: DataTypes.DATE, allowNull: false }, createdAt: { type: DataTypes.DATE, defaultValue: DataTypes.NOW }, updatedAt: DataTypes.DATE }); return History; }; 

当我尝试级联删除用户对象和关于该用户的所有数据从历史logging表我有以下错误:

更新或删除表“Users”违反了表“History”上的外键约束“History_userId_fkey”

当我尝试从书中做同样的事情时,我有以下错误:

更新或删除表“Users”违反了表“History”上的外键约束“History_bookId_fkey”

如果我不想有这个错误,我首先从历史中删除行,然后我可以删除有关用户/书籍的行。

如何解决这个问题?

提前致谢。

       

网上收集的解决方案 "Sequelize – 级联删除3个表"