【问题标题】:Do I need to pull the full user list to get a random user from Firebase?我是否需要提取完整的用户列表才能从 Firebase 获取随机用户?
【发布时间】:2017-09-16 09:47:49
【问题描述】:

为简单起见,假设我有一个类似于以下内容的 Firebase 方案:

  • 用户列表
    • 用户 1
      • 年龄 - 22
      • 性别 - M
    • 用户2
      • 年龄 - 26
      • 性别 - M
    • 用户 3
      • 年龄 - 20
      • 性别 - F

假设我想从该列表中随机获取所需年龄范围和所需性别的用户。现在我正在提取完整的用户列表,过滤掉不符合我偏好的用户,然后从客户端匹配的用户中随机获取一个用户。这对少数用户来说效果很好,但如果我有 10,000 个用户怎么办?

有什么方法可以在不下载所有用户的完整列表的情况下完成此操作,因为这会占用大量带宽。使用关系数据库很容易只使用 where 子句,但由于我不能使用 Firebase,我假设我必须在客户端做所有事情,这意味着检索完整的数据列表。最小化带宽的正确方法是什么?

【问题讨论】:

    标签: firebase firebase-realtime-database database nosql


    【解决方案1】:

    一种解决方案(我认为,目前是唯一的解决方案)是在您的数据库中保留一个单独的列表,其中仅包含用户名(“User1”、“User2”、...)。然后要获得一个随机用户,检索用户名列表并从中获取一个随机项。然后从完整用户列表中检索对应的完整用户。

    【讨论】:

    • 这确实是我会做的。唯一的区别是我会为每个过滤器创建单独的列表(在 Firebase,我们通常称它们为 indexex)。所以一个menList 列表,只有男性的ID,womenList 只有女性,如果需要teenList,只有青少年,等等。
    • 虽然这是一个可行的解决方案,但是否有计划实施更简单的方法来完成诸如获取 Firebase 路径的第一级之类的事情?对我来说,每次您想以不同的方式查看数据时都要求创建新的数据库结构似乎很不灵活。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 2012-12-15
    • 2018-08-16
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    相关资源
    最近更新 更多