Я пытаюсь удалить все содержимое таблицы сопоставления n: m.
У меня есть таблицы: MenuItems и UserGroups, как это, но я использую миграции для создания базы данных:
MenuItems
MenuItems.associate = function(models) {
MenuItems.belongsToMany(models.UserGroups, { through: models.MenuItemUserGroups });
};
USERGROUPS
UserGroups.associate = function(models) {
...
UserGroups.belongsToMany(models.MenuItems, { through: models.MenuItemUserGroups });
};
И, наконец, MenuItemUserGroups:
MenuItemUserGroups.associate = function(models) {
MenuItemUserGroups.belongsTo(models.MenuItems, { onDelete: 'CASCADE', hooks: true });
MenuItemUserGroups.belongsTo(models.UserGroups, { onDelete: 'CASCADE', hooks: true });
};
Я пытаюсь удалить, используя следующий код sequelize:
models.MenuItems.findOne({ where: { id: req.params.id }, include: [{ all: true }] }).then(async (menuItem) => {
if(req.body.userGroups.length <= 0) {
await menuItem.setUserGroups([]);
Я попытался удалить опцию каскада.
Сгенерированный SQL следующий:
DELETE FROM `MenuItemUserGroups` WHERE `MenuItemId` = 6 AND `UserGroupId` IN (NULL)
где UserGroupId IN (NULL) всегда ничего не будет возвращать. Если эта часть удалена, запрос работает.