假设我有一个可以属于组内多个角色的用户。它是这样建模的(来自第三方库)。
{
_id: '1',
roles: {
'repo1': ['contributor'],
'repo2': ['contributor', 'moderator', 'reviewer']
}
}
对于每种角色类型,都有不同的配置文件类型。例如,reviewer
可能具有如下架构:
{
approved: [{
pullRequest: '5678',
message: 'Now can manage 3D integration',
when: ISODate()
}],
denied: [{
pullRequest: '1234',
reason: 'Failed tests',
when: ISODate()
}]
}
可能与contributor
的个人资料不同。对于他们所处的每个角色,用户仍然可以在每个组中拥有个人资料。
在NoSQL中,您如何管理多种类型的用户配置文件?此应用程序的最正确的架构和关系类型是什么?
答案 0 :(得分:0)
在您的示例中,我假设审阅者正在批准并拒绝pullRequests。这是您不希望存储在用户文档中的信息,而是偏移到新集合,您可能会调用PullRequests。 PullRequests集合中的每个文档都代表一个PullRequest,您可以在该文档中存储有关该特定PullRequest的信息,包括它是否被批准/拒绝以及随后谁批准/拒绝它以及出于什么原因。在用户文档上存储角色是为了验证目的,以便您可以检查某人是否具有所需权限;有关其活动的记录信息最好留给单独的集合。这是一个明确的关注点分离,这种模型关系将更容易维护。
随意询问任何后续行动。