如何设计的一个组织结构
一个组织结构,通常是树状结构,但是有时候我们只需要对某个子树进行操作或读取,如果最终的存储是树状,层级过多时是不太合适的。
初步设计了如下结构
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标记是否被删除或者审核等等