我正在编写一个带有 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 的请求放入队列中,后端进行过滤并将结果放在用户可以收听的位置。但这是一个很大的额外负载,特别是考虑到每当问题有新答案时,后端都必须检查每个用户该新答案是否来自朋友。
如何在
response
节点查询 Firebase 以仅获取朋友的 UID,而不是所有人的 UID?
如果这是不可能的,是由用户进行过滤(并下载数千个不需要的 UID)更好,还是由服务器来做(巨大的额外负载)?
一旦您要求友谊是双向的,这就变得微不足道,因此还要存储反向关系。例如
friends:
user1:
user42
user999
user42:
user1
user999:
user1
使用这种双向数据结构,如果用户发帖,您可以简单地使用
/friends/$uid
加载他们的朋友列表并循环播放。无需昂贵的查询。