Mam Product
tabelę z następującymi kolumnami [id, name, CategoryId]
i Category
tabeli z modelu [id, name]
Sequelize.js onDelete: 'Kaskada' nie usuwa rekordy sequelize
produktu: -
module.exports = function(sequelize, DataTypes) {
var Product = sequelize.define('Product', {
name: DataTypes.STRING
}, {
associate: function(models) {
Product.belongsTo(models.Category);
}
});
return Product
}
Kategoria Model: -
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
}
po usunięciu kategorii usuwa tylko kategorię, a nie odpowiadające jej produkty. Nie wiem, dlaczego tak się dzieje?
zmiana: Sequelize Wersja sequelize 1.7.0
==================================== ============================================ Odpowiedź (W jaki sposób to mam stałe): -.
I dokonał tego poprzez dodanie ograniczenia w bazie danych za pomocą polecenia Alter
, jak Add Foreign Key Constraint
przez migration
jest otwarty bug w sequelize
.
ALTER TABLE "Products"
ADD CONSTRAINT "Products_CategoryId_fkey" FOREIGN KEY ("CategoryId")
REFERENCES "Categories" (id) MATCH SIMPLE
ON DELETE CASCADE
Whats wyjściu sequelize.sync? Czy dodaje klucz obcy z ograniczeniem usunięcia? W której wersji jesteś? –
@JanAagaardMeier Tabela produktów zawiera kolumnę 'CategoryId', ale ograniczenie klucza obcego nie jest dodawane. jak dodać klucz obcy z ograniczeniem usuwania? –
Czy muszę dodać migrację dla dodania ograniczenia klucza obcego? –