Как установить одностороннее ограничение в n: m ассоциации?

#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 тоже будут удалены, и я не получаю ошибок…

Как этого добиться?