我正在使用Firebase后端编写一个民意调查应用。用户回答是/否问题并查看结果。除了朋友之外,他们无法看到谁回答了这个问题。我的结构:
questions
question1:
readable
text: "Do you enjoy Stack Overflow?"
yes_count: 76
no_count: 14
response:
user1: yes
user2: no
...
user1000: no
users:
user1:
friends:
user1
user999
执行此操作的一种方法是在onChildAdded
节点上调用"response"
,并在客户端进行过滤。这可能导致下载数千个不必要的UID。另一种方法是要求服务器执行此操作。用户提出要求获取朋友的请求。队列上的UID,后端进行过滤并将其放在用户可以收听的位置。但这是一个很大的额外负担,特别是考虑到问题的新答案时,后端必须检查新答案是否来自每个用户的朋友。
问题:是否可以通过这样的方式查询Firebase,以便只获取朋友' UID位于"response"
节点,而不是所有人。如果没有,用户是否更好地进行过滤(以及下载数千个不需要的UID),或者服务器是否更好(额外负载很大)?
答案 0 :(得分:1)
一旦你要求友谊是双向的,这就变得微不足道了,所以也存储了反向关系。 E.g。
friends:
user1:
user42
user999
user42:
user1
user999:
user1
使用这种双向数据结构,如果用户发布,您可以只使用/friends/$uid
加载他们的好友列表并循环显示。无需昂贵的查询。