Sequelize - 我必须在哪里放置 "onDelete" 选项

Sequelize - Where do I have to put "onDelete" option

我目前正在 nodeJS/Express API 中使用 Sequelize 6.5.1 我想在模型之间建立一些关联,知道我我目前没有使用 sequelize 迁移功能

我有 3 个模型:角色,Permission_group,权限

这是我为第一个协会所做的:

Role.hasMany(this.sequelize.models.permission_groups, {
  foreignKey: "role_id",
  onDelete: "CASCADE",
});
PermissionGroup.belongsTo(this.sequelize.models.roles, {
  foreignKey: "role_id",
});

以及我在 postgres 数据库中看到的内容:

Foreign-key constraints:
"permission_groups_role_id_fkey" FOREIGN KEY (role_id) REFERENCES roles(_id) ON UPDATE CASCADE ON DELETE CASCADE

这是我为第二个协会所做的:

PermissionGroup.hasMany(this.sequelize.models.permissions, {
  foreignKey: "permission_group_id",
  onDelete: "CASCADE",
});
Permission.belongsTo(this.sequelize.models.permission_groups, {
  foreignKey: "permission_group_id",
});

如您所见,两个关联的工作方式和定义方式相同,但这是我对第二个关联的了解:

Foreign-key constraints:
"permissions_permission_group_id_fkey" FOREIGN KEY (permission_group_id) REFERENCES permission_groups(_id) ON UPDATE CASCADE ON DELETE SET NULL

然后我尝试像这样以相反的方式定义关联:

PermissionGroup.hasMany(this.sequelize.models.permissions, {
  foreignKey: "permission_group_id",
});
Permission.belongsTo(this.sequelize.models.permission_groups, {
  foreignKey: "permission_group_id",
  onDelete: "CASCADE",
});

在这里我得到了预期的行为:

Foreign-key constraints:
"permissions_permission_group_id_fkey" FOREIGN KEY (permission_group_id) REFERENCES permission_groups(_id) ON UPDATE CASCADE ON DELETE CASCADE

一切都是这样,但我不明白为什么。我想了解真正的 onDelete 策略,并在我的所有代码中以相同的方式实现它。

您确定没有在 permission_group 模型之前定义 permissions 模型吗?我认为问题出在这里..