用于对引用实体进行排序的Firebase数据结构

时间:2016-09-16 01:04:13

标签: firebase firebase-realtime-database nosql

我应如何设计结构,以便用户可以查看订阅频道的视频(例如youtube)?

以下是我的想法,但我不确定从最新到最旧,一次只能获取几个频道的视频。有了这个,用户必须获取每个频道的所有视频,并在客户端进行排序。这甚至是可扩展的吗?

{
  "subscriptions": {
    "user1": {
      "channel1": true,
      "channel3": true,
      "channel14": true
    }
  }
}

1 个答案:

答案 0 :(得分:2)

在这种情况下,我建议添加一个“userVideos”索引引用(不要与我要提及的索引混淆),其中保存用户所有视频的列表订阅了``userVideos / {userID} / {videoID} .date`字段上的.indexOn rule

每当频道发布新视频时,您都应该将视频添加到频道订阅者的所有视频列表中。当用户订阅新频道时,只需将所有频道的视频添加到用户的视频中。

您可以在Firebase's data structures guide中详细了解如何对数据结构进行非规范化/展平,这样可以有效。

- userSubscriptions
  "user1"
    "channel1" : true
    "channel2" : true
    "channel4" : true
- subscriptionUsers
  "channel1"
    "user1" : true
    "user2" : true
    ...
  "channel2"
     "user1" : true
  ...
- userVideos
  "user1"
    "video1"
      "date" : <date>
    "video2" : true
      "date" : <date>
相关问题