#javascript #node.js #sequelize.js
#javascript #node.js #sequelize.js
Вопрос:
У меня есть N: M ассоциация в последовательности между User
и TrainerProp
(свойства пользователя). Вот упрощенный пример:
/**
* User
*/
const User = sequelize.define('User', {
// USER ATTRIBUTES... NOT IMPORTANT
});
User.associate = models => {
// User have many TrainerProps
User.belongsToMany(TrainerProp, {
through: 'user_trainerProp',
foreignKey: 'user_id'
});
};
/**
* TrainerProp
*/
const TrainerProp = sequelize.define('TrainerProp', {
// TRAINER PROP ATTRIBUTES... NOT IMPORTANT
});
TrainerProp.associate = models => {
// TrainerProp belongs to many Users
TrainerProp.belongsToMany(User, {
through: 'user_trainerProp',
foreignKey: 'trainerProp_id',
onDelete: 'restrict',
onUpdate: 'restrict'
});
};
/**
* user_trainerProp table (n:m)
*/
const user_trainerProp = sequelize.define('user_trainerProp', {
trainerProp_id: DataTypes.INTEGER,
user_id: DataTypes.INTEGER,
}, {
timestamps: false,
freezeTableName: true
});
Как вы можете видеть, я установил ограничение на обновление и OnDelete на Trainer
, поэтому, когда я пытаюсь удалить TrainerProp
то, что используется в таблице, user_trainerProp
это приведет к сбою ForeignKeyConstraintError
.
Моя проблема в том, что когда я пытаюсь удалить User
то, что у меня есть TrainerProps
, я тоже получаю ограничение. Я ожидал, что при удалении User
все строки в user_trainerProp
тоже будут удалены, и я не получаю ошибок…
Как этого добиться?