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

京公网安备 11010502036488号