Невозможно удалить из таблицы связей Sequelize n: m - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь удалить все содержимое таблицы сопоставления 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) всегда ничего не будет возвращать. Если эта часть удалена, запрос работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...