NoSQL:基于角色的模型关系

时间:2018-10-15 13:02:28

标签: javascript mongodb nosql

我想知道在用户和其他实体之间建立基于角色的关系的最佳方法是什么。让我们以Facebook页面为例:用户可以为页面扮演不同的角色。他可以是管理员,主持人等。

如何为这种情况设计收藏?查询给定用户具有特定角色的所有页面应该很容易。在数据库级别检查权限也应该很容易。

我想到了不同的方法:

A:将页面/角色存储在User集合中

  1. 轻松查询给定用户的所有页面
  2. 可能会使User模式膨胀

B:将用户及其角色存储在Pages集合中

  1. 轻松查询给定页面的所有用户/角色
  2. 可能会使Pages模式膨胀

C:使用关系集合PageRoles

  1. 不会膨胀特定于域的模型
  2. 需要其他查询以检查角色

如果我们谈论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'
  }
}

这些不同方法的利弊是什么?

谢谢您的任何投入。

0 个答案:

没有答案