我的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不支持多个查询排序。
答案 0 :(得分:0)
对于复杂的查询,您可能必须使用firestore,因为Firebase不支持任何复杂的查询,只需简单的订购和填充。
Firebase建议通过展平数据来解决这些问题,并允许我们复制一些数据。
对于您的情况,您可以将帖子ID更改为groupId,以便您可以轻松阅读特定groupId的帖子。
如果您需要post id,那么您可以创建像groupPosts这样的新节点 groupPosts-> GroupID-> PostId1 PostId2 GroupID2-> PostId3 ............
如果你需要一些像createdAt这样的数据,你可以保留这里的标题,但不需要所有的数据。