Reputation: 51
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
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
Reputation: 2775
You should define onDelete action on belongsTo association
emailSign.belongsTo(models.user_number, {
foreignKey: 'user_number_id',
onDelete: 'CASCADE'
});
Upvotes: 2