我应如何设计结构,以便用户可以查看订阅频道的视频(例如youtube)?
以下是我的想法,但我不确定从最新到最旧,一次只能获取几个频道的视频。有了这个,用户必须获取每个频道的所有视频,并在客户端进行排序。这甚至是可扩展的吗?
{
"subscriptions": {
"user1": {
"channel1": true,
"channel3": true,
"channel14": true
}
}
}
答案 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>