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