我想知道在用户和其他实体之间建立基于角色的关系的最佳方法是什么。让我们以Facebook页面为例:用户可以为页面扮演不同的角色。他可以是管理员,主持人等。
如何为这种情况设计收藏?查询给定用户具有特定角色的所有页面应该很容易。在数据库级别检查权限也应该很容易。
我想到了不同的方法:
A:将页面/角色存储在User
集合中
User
模式膨胀 B:将用户及其角色存储在Pages
集合中
Pages
模式膨胀 C:使用关系集合PageRoles
如果我们谈论A oder B,我们又有两种可能的方法:
A:使用平面数组
示例:
{
name: 'A Page',
admins: [],
moderators: [],
}
B:使用对象
示例:
{
name: 'A Page',
roles: {
// maps userId to the users role
1: 'admin',
5: 'admin',
6: 'moderator'
}
}
这些不同方法的利弊是什么?
谢谢您的任何投入。