如何设计的一个组织结构

一个组织结构,通常是树状结构,但是有时候我们只需要对某个子树进行操作或读取,如果最终的存储是树状,层级过多时是不太合适的。
初步设计了如下结构

export interface IOrganization {
  _id?: any;
  id?: any;
  name: string;
  parents?: string[];
  admin?: string;
  members: string[];
  // org special data map
  membersData: {
    [key: string]: IOrgnizationMember;
  };
  state?: number;
}
特别之处:
1. parents字段:纪录了所有的上级,这样就能够快速检索到某个组织的子组织,或者根据某个组织找到上级和下级 => 创建时,通过父组织的parents.concat([parentId])获取,
2. membersData:用于纪录成员数据,这也是为了将members设置成id数组,data的key就是members中的一个id, 查找某个用户的数据直接可以寻址
3. state标记是否被删除或者审核等等



全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务