Sequelize.js onDelete: 'cascade' ne supprime pas les enregistrements
Je vais avoir Product
tableau avec les colonnes suivantes [id, name, CategoryId]
et Category
table avec [id, name]
Modèle De Produit:-
module.exports = function(sequelize, DataTypes) {
var Product = sequelize.define('Product', {
name: DataTypes.STRING
}, {
associate: function(models) {
Product.belongsTo(models.Category);
}
});
return Product
}
Catégorie Modèle:-
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
}
quand j'ai supprimer la catégorie, il supprime la catégorie non seulement les produits correspondants sont associés. Je ne sais pas pourquoi ce qui se passe?
mise à jour:
Sequelize Version sequelize 1.7.0
================================================================================
Réponse(Comment cela, je l'ai corrigé.):-
Je l'ai accompli en ajoutant la contrainte sur la base de données à l'aide de Alter
commande, comme Add Foreign Key Constraint
par migration
est ouvert bug dans sequelize
.
ALTER TABLE "Products"
ADD CONSTRAINT "Products_CategoryId_fkey" FOREIGN KEY ("CategoryId")
REFERENCES "Categories" (id) MATCH SIMPLE
ON DELETE CASCADE
source d'informationauteur Sampat Badhe
Vous devez vous connecter pour publier un commentaire.
Je crois que vous êtes censé mettre le onDelete dans la Catégorie modèle au lieu de produits dans le modèle.
Comme des "sequelize": "^3.5.1", cela ne fonctionne que lorsque vous mettez
onDelete='CASCADE'
dans lebelongsTo
déclaration, qui est leProduct
modèle dans votre cas. Ceci est en contradiction avec les docs: http://sequelize.readthedocs.org/en/latest/api/associations/index.html?highlight=onDelete#hasmanytarget-optionsReportez-vous à cette question:Sequelize onDelete ne fonctionne pas