我有以下的列[id, name, CategoryId]
和Category
表[id, name]
Sequelize.js onDelete: '級聯' 不刪除記錄sequelize
產品型號Product
表: -
module.exports = function(sequelize, DataTypes) {
var Product = sequelize.define('Product', {
name: DataTypes.STRING
}, {
associate: function(models) {
Product.belongsTo(models.Category);
}
});
return Product
}
分類型號: -
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版本sequelize 1.7.0
==================================== ============================================ 答案(How此我有固定): -
我通過在數據庫中使用Alter
命令通過migration
在sequelize
加入約束,如Add Foreign Key Constraint
是一個開放bug實現這一點。
ALTER TABLE "Products"
ADD CONSTRAINT "Products_CategoryId_fkey" FOREIGN KEY ("CategoryId")
REFERENCES "Categories" (id) MATCH SIMPLE
ON DELETE CASCADE
sequelize.sync的請告訴我輸出?它是否添加了帶有刪除約束的外鍵?你在什麼版本上? –
@JanAagaardMeier產品表具有'CategoryId'列,但不添加外鍵約束。如何添加帶有刪除約束的外鍵? –
我是否需要添加遷移以添加外鍵約束? –