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

问题描述 投票:0回答:1

我正在编写一个带有 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)更好,还是由服务器来做(巨大的额外负载)?

database firebase data-structures firebase-realtime-database
1个回答
1
投票

一旦您要求友谊是双向的,这就变得微不足道,因此还要存储反向关系。例如

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

使用这种双向数据结构,如果用户发帖,您可以简单地使用

/friends/$uid
加载他们的朋友列表并循环播放。无需昂贵的查询。

© www.soinside.com 2019 - 2024. All rights reserved.