majid
majid

Reputation: 51

Destroy cascade is not working in Sequelize orm

I have two models created with Sequelize cli; first model is user_number, the second model is emailSign.

This is my user_number model:

    'use strict';
     module.exports = function(sequelize, DataTypes) {
     var user_number = sequelize.define('user_number', {
     user_id: DataTypes.INTEGER,
     callRoute_id: DataTypes.INTEGER,
     password: DataTypes.STRING,
     }, {
     underscored: true,
     classMethods: {
         associate: function(models) {
            // associations can be defined here
             user_number.hasMany(models.emailSign, {
                foreignKey: 'user_number_id',
                onDelete: "CASCADE",
             });
           }
           }
        });
      return user_number;
    };

This is my emailSign model:

      'use strict';
      module.exports = function(sequelize, DataTypes) {
      var emailSign = sequelize.define('emailSign', {
      email: DataTypes.STRING,
      user_number_id: DataTypes.INTEGER
      }, {
         underscored: true,
         classMethods: {
             associate: function(models) {
             // associations can be defined here
             emailSign.belongsTo(models.user_number, {
             foreignKey: 'user_number_id',

           })
         }
        }
      });
      return emailSign;
          }; 

I want destroy user_number to cascade remove emailSign. My code for destroy is

User_number.destroy({where:{id : 5}}).then(function(){

resp.status(200);
) 

user_number with id 5 is removed, but emailSign is not removed.

How can I remove the related emailSign as well?

My Sequelize version is 3.30.4

Upvotes: 2

Views: 11440

Answers (2)

Myron Leung
Myron Leung

Reputation: 13

Not sure if this is still an issue, but I came across this issue too. The cascade option should not be capitalized:

onDelete: 'cascade' 

instead of

onDelete: 'CASCADE'

Upvotes: 0

Yrysbek Tilekbekov
Yrysbek Tilekbekov

Reputation: 2775

You should define onDelete action on belongsTo association

emailSign.belongsTo(models.user_number, {
     foreignKey: 'user_number_id',
     onDelete: 'CASCADE'
});

Upvotes: 2

Related Questions