以下代码取自Firebase docs about structuring data。对于我的某些数据,我有类似的设置,但是还有一个额外的要求,即该特定示例似乎无法涵盖。
假设您要检索属于“ techpioneers”组的每个用户的姓名。
我是说正确的吗,唯一的方法是从groups/techpioneers/members
获取成员列表,然后遍历它们以获取users/$userId
?
如果您有数百万个用户,这不会变得非常低效吗?您当然可以限制结果,但是如果您必须获取属于techpioneers组的100个成员,则这是100个单独的请求。
在这种基础上,这种结构化仍然是扩展数据的最佳方法吗?
// An index to track Ada's memberships
{
"users": {
"alovelace": {
"name": "Ada Lovelace",
// Index Ada's groups in her profile
"groups": {
// the value here doesn't matter, just that the key exists
"techpioneers": true,
"womentechmakers": true
}
},
...
},
"groups": {
"techpioneers": {
"name": "Historical Tech Pioneers",
"members": {
"alovelace": true,
"ghopper": true,
"eclarke": true
}
},
...
}
}
我的想法是,最好使用这样的另一个密钥结构:
{
"groupUsers":
"techpioneers": {
"alovelace": {
"name": "Ada Lovelace"
}
}
}
这样做意味着您只需向groupUsers/techpioneers
发出一个请求即可接收所有成员及其姓名。
我渴望按照文档中显示的建议确保结构保持尽可能平坦。
我是在考虑正确的路线还是被误解了?任何建议将不胜感激。