小编Hoo*_*ari的帖子

MongoDB - 为多对多关系构建和查询模型和模式

试图解决MongoDB中关系的缺点,这是我在我的数据库中尝试的:

楷模:

  1. 用户:(已经有很多用户在数据库中)大多通过他们查询,uid_id也可用.
  2. 团队:包含1个所有者,多个成员,项目和资产.
  3. 成员:可以属于多个团队,每个成员可以拥有不同的角色.成员可以属于具有不同角色的多个团队.
  4. 角色:属于成员.成员可以在他们所属的每个团队中拥有不同的角色.['view','edit','admin'].角色也可以嵌入到成员模型中以使用混合方法.
  5. 项目:项目可以是独立的,也可以是团队的一部分,属于团队的项目的访问权限由成员的角色决定.
  6. 资产:资产可以是独立的,也可以是团队的一部分,属于团队的资产的访问权限由成员的角色决定.资产也可以包含多个项目.

产品规格:

每个用户都可以是该团队的成员或该应用程序的独立用户.普通用户可以拥有自己的私有项目和资产.

团队成员可以访问团队所有者认为可以访问的资产和项目.

会员可以创建自己的私人资产和项目.

根据成员的角色,成员还可以与其团队成员共享资产.

成员,根据其角色,可以添加,删除,编辑团队资产,删除或重命名团队,添加或删除团队成员.

成员可以查看团队中与他们共享的资产和项目的列表.

成员可以查看单个资产页面,他们可以根据角色在资产中添加删除项目.

成员可以查看,编辑,添加,删除单个项目,具体取决于他们的角色.

目前的架构:

const teamSchema = new Schema({
  uid: {
    type: String,
    required: true
  },
  name: {
    type: String,
    required: true
  },
  members: {
    type: [String]
  },
  brands: {
    type: [String]
  }
}, { collection: 'team', timestamps: true });

const memberSchema = new Schema({
  uid: {
    type: String,
    required: true
  },
  owner: {
    type: String,
    required: true
  },
  teamID: { …
Run Code Online (Sandbox Code Playgroud)

database mongoose mongodb node.js graphql

6
推荐指数
0
解决办法
190
查看次数

标签 统计

database ×1

graphql ×1

mongodb ×1

mongoose ×1

node.js ×1