我正在为多家公司开发应用程序。
我在如何处理每家公司内部的用户角色方面遇到了障碍。我见过各种其他应用程序的用户角色,但它们都不适合我的场景。
Companies
- Company A {
users {
admins {
admin1:{}
},
staff {
staff1:{}
},
drivers {
driver1:{}
}
}
},
- Company B {
...
}
对于每家公司...... - 我希望公司的管理员创建其他管理员/员工/司机 - 我希望公司的员工创建其他驱动程序 - 我希望驱动程序最低,无法创建任何用户
我看不到完成这项任务的好方法!任何帮助将不胜感激!
谢谢!
康纳
答案 0 :(得分:0)
建议flatten and denormalise your data,因此您的数据库结构可能更类似于:
{
"companies": {
"company1": {
"name": "Company A",
"users": {
"user1": {
"admin": true
}
}
},
"company2": {
"name": "Company B",
"users": {
"user1": {
"admin": true
},
"user2": {
"driver": true
}
}
},
"company3": { ... }
},
"users": {
"user1": {
"companies": {
"company1": {
"admin": true
},
"company2": {
"admin": true
}
}
},
"user2": {
"companies": {
"company2": {
"driver": true
}
}
},
"user3": { ... }
}
}
此模式称为denormalization,是使用NoSQL数据库(如Firebase实时数据库)时的建议方法。这方面的主要缺点是数据重复,但有关处理此问题的详细信息,请参阅this answer which explains a number of methods(虽然示例是在JavaScript中,但前提仍然适用)。
使用这种结构可以轻松地将用户与多家公司相关联,同时还可以轻松识别哪些用户与每家公司相关联,以及他们在该公司中扮演的角色。