【发布时间】:2017-02-02 17:13:46
【问题描述】:
假设我有一个用户拥有宠物的应用。
根据我在不同来源中阅读的内容,这是在 Firebase DB 中建模关系的有效方法:
{
"users":{
"user1":{
"name":"Arthur",
"pets":{
"pet1":true,
"pet2":true
}
},
"user2":{
"name":"George",
"pets":{
"pet3":true,
"pet4":true
}
}
},
"pets":{
"pet1":{...},
"pet2":{...},
"pet3":{...},
"pet4":{...}
}
}
假设我有一个 Android 应用程序,我想显示所有用户的列表,并在每个列表项中还提及该用户拥有哪些宠物。
我想要的是一个用户对象列表,其中每个用户对象都有宠物对象列表。例如:
public class User {
public String name;
public List<Pet> pets;
...
}
查询数据库以获得此结果的最佳方法是什么?
【问题讨论】:
-
有什么问题/担忧?因为它似乎是loading users from a list 和joining in the pets(或one of these)的组合。如果您担心连接性能,请阅读my answer here。
-
感谢@FrankvanPuffelen,我担心的是:我想要的是用户对象列表(如问题所示)。比如说我有 100 个用户,这是否意味着我需要为用户进行查询,然后循环并为每个用户进行另一个查询(100 个查询)?然后我需要自己设置每个用户的宠物列表......这看起来很复杂和不方便
-
如果要显示 100 个用户并使用索引数据结构,则需要获取 100 个项目。这是一个客户端join操作,确实会导致更多的客户端代码。但它并不像你想象的那么慢,正如我在第一条评论的最后一个链接中所解释的那样。
-
知道了。我担心这就是答案:) 谢谢
标签: android firebase firebase-realtime-database