Firebase业务角色
问题描述:
我正在为多家公司开发应用程序。Firebase业务角色
我在如何处理每个公司内的用户角色方面遇到困难。我已经看到了各种其他应用程序的用户角色,但没有一个适合我的场景。
Companies
- Company A {
users {
admins {
admin1:{}
},
staff {
staff1:{}
},
drivers {
driver1:{}
}
}
},
- Company B {
...
}
对每一家公司...... - 我想一个公司的管理员创建其他管理员/员工/司机 - 我想一个公司的员工创造其他司机 - 我想司机是最低的,无法创建任何用户
我看不到完成此任务的好方法!任何帮助将不胜感激!
谢谢!
康纳
答
建议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数据库时,建议的方法(如火力地堡实时数据库)。这方面的主要缺点是数据重复,但有关处理这些问题的详细信息,请参阅this answer which explains a number of methods(虽然示例使用JavaScript,但前提仍然适用)。
使用此结构可以轻松地将用户与多个公司关联,同时还可以轻松识别哪些用户与每个公司关联,以及他们在该公司内具有何种角色。
感谢您的提示,虽然我发现这在构建我的数据库时非常有帮助,但它并没有解决让管理员为员工和驱动程序等创建帐户的问题...... – Connor
您需要管理员创建帐户的方法为他人?您是指创建Firebase身份验证帐户,还是只需将数据添加到数据库以代表用户? – Grimthorr
工作人员管理驾驶员必须做的事情,但他们也需要能够创建新的驾驶员。驱动程序需要在移动应用程序上进行某种身份验证过程,以便我可以跟踪执行的操作。 – Connor