2016-09-16 11 views
0

ユーザがチャンネル登録したチャンネルの動画(YouTubeなど)を閲覧できるようにするにはどうすればよいですか?参照されたエンティティをソートするためのFirebaseデータ構造

以下は私が心に留めていることですが、最新のものから古いものまで、一度にいくつかのチャンネルのビデオを取得するのは不確かです。これにより、ユーザーは各チャンネルのすべてのビデオを取り出し、クライアント側で並べ替える必要があります。これは拡張性がありますか?この場合

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

は、あなただけの – Dravidian

答えて

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> 
+0

私は実現しなかった...(たぶん代わりに、真の)それらにインデックスを追加する必要があります新しいビデオが登場すると、そのチャンネルを購読している各ユーザーにビデオを追加する必要があります。 100万人を超えるチャンネルを持つチャンネルがある場合、この費用はかかりませんか? – user1164937

+1

それは確かに大きな操作です。ただし、[データファンアウト方法](https://firebase.google.com/docs/database/web/save-data#update_specific_fields)を使用して1回の更新呼び出しで実行できます。 –

関連する問題