Firebase应该由服务器或客户端进行过滤

时间:2018-02-13 14:47:40

标签: database firebase data-structures firebase-realtime-database

我正在使用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),或者服务器是否更好(额外负载很大)?

1 个答案:

答案 0 :(得分:1)

一旦你要求友谊是双向的,这就变得微不足道了,所以也存储了反向关系。 E.g。

friends:
    user1:
        user42
        user999
    user42:
        user1
    user999:
        user1

使用这种双向数据结构,如果用户发布,您可以只使用/friends/$uid加载他们的好友列表并循环显示。无需昂贵的查询。