无法从Sequelize n:m关联表中删除

时间:2019-07-02 08:52:46

标签: javascript node.js sqlite sequelize.js

我正在尝试从n:m关联表中删除所有内容。 我有这样的表格:MenuItems和UserGroups就是这样,但是我正在使用迁移来生成数据库:

MenuItems

  MenuItems.associate = function(models) {
    MenuItems.belongsToMany(models.UserGroups, { through: models.MenuItemUserGroups });
  };

用户组

  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 });
  };

我尝试使用以下序列化代码删除:

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)将始终不返回任何内容。如果删除了该部分,则查询有效。

0 个答案:

没有答案