Firebase从多个位置检索数据(多个查询)

时间:2018-04-12 16:16:42

标签: swift sorting firebase

我的Firebase结构如下:

Posts
  - post1
     - timestamp
     - groupID 
     - text 
  - post2
     - timestamp
     - groupID 
     - text 

Users 
  - user1 
     - groups
        - group1
        - group2 
     - some other data ...
  - user2
     - groups
        - group1 
        - group3
     - some other data ... 

我想实现一个"新闻Feed" (类似于Facebook),其中显示了特定用户所属的所有组的所有帖子。因此,在我的示例中,我将首先阅读用户所属的组(例如" group1"" group3" for" user2"。这些密钥对应于" groupID"在"帖子"节点。我想得到所有帖子,其中groupID == group1或groupID == group2按时间戳排序。我该怎么做这个?我尝试通过"等于" -query按groupID订购帖子但是这不能让我按时间戳排序,因为Firebase不支持多个查询排序。

1 个答案:

答案 0 :(得分:0)

对于复杂的查询,您可能必须使用firestore,因为Firebase不支持任何复杂的查询,只需简单的订购和填充。

Firebase建议通过展平数据来解决这些问题,并允许我们复制一些数据。

对于您的情况,您可以将帖子ID更改为groupId,以便您可以轻松阅读特定groupId的帖子。

如果您需要post id,那么您可以创建像groupPosts这样的新节点 groupPosts-> GroupID->                               PostId1                               PostId2                          GroupID2->                              PostId3                              ............

如果你需要一些像createdAt这样的数据,你可以保留这里的标题,但不需要所有的数据。