【发布时间】:2021-05-01 13:07:42
【问题描述】:
我最近一直在努力解决一个我似乎无法弄清楚的问题。我们基本上有3个模型。
User、Role、Organization。用户被分配到具有角色的组织。他可以在一个组织中担任多个角色。例如
它们通过另一个模型连接UserOrganization
当我尝试使用以下内容获取所有内容时
{
model: Organization,
required : true,
include: [
{
model: Role,
required : true
},
],
}
我得到了一些奇怪的结果。用户很好,用户的组织很好,但在该组织内,获取的角色不是来自该特定用户。分配给该组织的角色是否分配给任何用户。
userOrganization.js
UserOrganization.belongsTo(models.Organization, {
foreignKey: 'organization_id',
});
UserOrganization.belongsTo(models.User, {
foreignKey: 'user_id',
});
UserOrganization.belongsTo(models.Role, {
foreignKey: 'role_id',
});
user.js
User.belongsToMany(models.Organization, {
through: {
model: models.UserOrganization,
unique: false,
},
foreignKey: 'user_id',
otherKey: 'organization_id',
});
User.belongsToMany(models.Role, {
through: {
model: models.UserOrganization,
unique: false,
},
foreignKey: 'user_id',
otherKey: 'role_id',
});
组织.js
Organization.belongsToMany(models.F5Connection, {
through: {
model: models.OrganizationF5Connection,
unique: false,
},
foreignKey: 'organization_id',
otherKey: 'f5_connection_id',
});
Organization.belongsToMany(models.Role, {
through: {
model: models.UserOrganization,
unique: false,
},
foreignKey: 'organization_id',
otherKey: 'role_id',
});
角色.js
Role.belongsToMany(models.User, {
through: {
model: models.UserOrganization,
unique: false,
},
foreignKey: 'role_id',
otherKey: 'user_id',
});
Role.belongsToMany(models.Organization, {
through: {
model: models.UserOrganization,
unique: false,
},
foreignKey: 'role_id',
otherKey: 'organization_id',
});
我哪里出错了?有没有办法获取仅分配给他的角色的用户组织?另一种解决方案是获取用户角色,然后在结果之后将它们与组织进行匹配。
谢谢
【问题讨论】:
标签: node.js sequelize.js sequelize-typescript