Sequelize.js onDelete:'cascade'不会删除logging的续集

我有Product表与以下列[id, name, CategoryId]Category[id, name]

产品型号: –

 module.exports = function(sequelize, DataTypes) { var Product = sequelize.define('Product', { name: DataTypes.STRING }, { associate: function(models) { Product.belongsTo(models.Category); } }); return Product } 

分types号: –

 module.exports = function(sequelize, DataTypes) { var Category = sequelize.define('Category', { name: { type: DataTypes.STRING, allowNull: false } }, { associate: function(models) { Category.hasMany(models.Product, { onDelete: 'cascade' }); } }); return Category } 

当我删除类别时,它只删除类别而不是相关的产品。 我不知道这是为什么发生?

更新:Sequelize Version sequelize 1.7.0

================================================== ============================== 答案 (我如何解决这个问题): –

我通过使用Alter命令Add Foreign Key Constraint数据库约束来完成这项工作,因为通过migration Add Foreign Key Constraint是一个开放的错误 。

 ALTER TABLE "Products" ADD CONSTRAINT "Products_CategoryId_fkey" FOREIGN KEY ("CategoryId") REFERENCES "Categories" (id) MATCH SIMPLE ON DELETE CASCADE 

       

网上收集的解决方案 "Sequelize.js onDelete:'cascade'不会删除logging的续集"

我相信你应该把onDelete放在Category模型中,而不是放在产品模型中。

 module.exports = function(sequelize, DataTypes) { var Category = sequelize.define('Category', { name: { type: DataTypes.STRING, allowNull: false } }, { associate: function(models) { Category.hasMany(models.Product, { onDelete: 'cascade' }); } }); return Category } 

至于“sequelize”:“^ 3.5.1”,只有在belongsTo声明中放置onDelete='CASCADE' belongsTo ,这是您的情况下的Product模型。 这与文档相矛盾: http : //sequelize.readthedocs.org/en/latest/api/associations/index.html? highlight = onDelete#hasmanytarget- options

请看这个问题: Sequelize onDelete不工作