2015-04-26 11 views
1

为了简单起见可以说我有一个火力地堡计划,看起来像:我是否需要将完整的用户列表从Firebase中获取随机用户?

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

比方说,我想从该列表中随机用户在期望的年龄范围和期望的性别之内。现在我正在拉取完整的用户列表,筛选出与我的偏好不匹配的用户列表,然后从那些与客户端相匹配的用户中获得随机用户。这对于少数用户来说工作得很好,但如果我有10,000个用户呢?

有没有什么办法可以在不下载所有用户的完整列表的情况下完成此任务,因为这非常重要。使用关系数据库可以很容易地使用where子句,但由于我无法使用Firebase,因此我认为我必须执行所有客户端操作,这意味着要检索完整的数据列表。什么是正确的方法来最小化带宽?

回答

2

一个解决方案(和,我认为,目前,唯一的解决方案)是在您的数据库中保留一个单独的用户名列表(“User1”,“User2”,...)。然后为了获得一个随机的用户,检索用户名列表并从中随机选择一个项目。然后从完整的用户列表中检索相应的完整用户。

+0

这的确是我会做的。唯一的区别是我会为每个过滤器创建单独的列表(在Firebase中我们经常称它们为* indexex *)。因此,只有男性id的'menList'列表,只有女性的'womenList',如果需要'teenList'只有青少年等。 –

+1

尽管这是一个可行的解决方案,是否有任何计划实施更简单的方法如何获取Firebase路径的第一级? 对我来说,要求每次以不同的方式查看数据时都需要创建新的数据库结构似乎是不灵活的。 – Marein