我正在开发一个Android应用程序,年龄较大的孩子可以捡到年幼的孩子并步行上学。通过该应用程序,经过身份验证(电子邮件和密码)的小孩可以在三个地址之间进行选择以获取。截至目前,我的实时数据库看起来像这样:
我应该创建一个名为" Adresses"并有如下结构?
Adresses
Sherman Street
username: Jannie
因为我想检索街道的名称以及在列表视图中选择了地址的所有用户
答案 0 :(得分:0)
您建议的方法是很好的做法:您应该尝试尽可能地展平您的数据结构。
我建议使用用户的ID作为每个地址的成员资格,这样很容易识别。这样,您就可以从/addresses/Sherman Street
获取“Sherman Street”成员列表,然后轻松地将其中列出的键与/users/
处的用户匹配。
{
"users": {
"oXrJPVZsnMP3VKp9palSBfdnntk1": { ... },
"xQDx3ntavhV3c02KFRPS8lxYfC62": { ... }
},
"addresses": {
"Sherman Street": {
"members": {
"xQDx3ntavhV3c02KFRPS8lxYfC62": true
}
},
"Wallaby Way": {
"members": {
"oXrJPVZsnMP3VKp9palSBfdnntk1": true
}
}
}
}
您还可以通过向用户添加与地址名称匹配的address
字段来添加向后链接:
{
"users": {
"oXrJPVZsnMP3VKp9palSBfdnntk1": { ... },
"xQDx3ntavhV3c02KFRPS8lxYfC62": {
"username": "Jannie",
"address": "Sherman Street"
}
},
"addresses": {
"Sherman Street": { ... }
}
}
将两者结合使用可以轻松识别用户选择了哪些地址,无论您当前在应用中处理哪个对象。
有关如何构建数据的更多详细信息,请参阅Firebase documentation on database structure。