我目前在 nodeJS/Express API 中使用 Sequelize 6.5.1 ,我想在模型之间设置一些关联,知道我目前没有使用 sequelize 迁移功能
我有 3 个模型: Angular 色、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 模型之前没有定义 权限 模型吗?我认为问题来自这里..
关于javascript - Sequelize - 我必须在哪里放置 "onDelete"选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68487508/