2016-12-12 10 views
0

Firebaseデータベースsampleが非常に役に立ちますが、少し気になるものに気付きました。Firebaseデータベース内の星の入れ子

この例では、ユーザーはFacebookで「好き」のような投稿を投稿できることを意味します。付属のサンプルでは、​​彼らはポストに星を入れ子になったので、私たちは、このようなサンプルオブジェクトを持っている:

"post_id" : { 
     "author": "username", 
     "body": "Some content", 
     "starCount": 1 
     "stars" : { 
       "user_id_who_gave_star" : "true" 
     } 
     "title": "Some title", 
     "uid": "author_id" 
} 

このような解決策は、例えばのように、多くの利点を持っていますすでに星をつけているかどうかを確認してアイコンを隠すか変更するか、「starCount」を変更して「星」に次の値を加えることができます。

しかし、私たちは大きなアプリケーションを持っていて、1000人のユーザーがスターを付けたので、ポストデータをダウンロードするたびに1000個のユーザーIDをダウンロードするのが最良の解決策ではない可能性があります。

質問

私の質問は、このようなアプリケーションのための最善のアプローチは何か、であると誰かがFirebaseは、このような状況でどのように動作するかテストがありますか?

答えて

1

ここfirebaser

私たちのドキュメントの例を書くとき、私たちは常に、十分なコンテキストを持つ十分に小さい例を保ち、そして私たち自身のベストプラクティスを、次の必要性のバランスを取る必要があります。

これは実際に、私たち自身のベストプラクティスである「ネストしていないデータ」に違反しているケースの1つです。あなたが言ったように:これは、ユーザーが投稿をダウンロードすると、その投稿を好きなユーザーのすべてのUIDを取得することを意味します。

アプリケーションのスケールの使用が懸念されることがあります。アプリの場合は、別のトップレベルノードとして「投稿をアップアップしたユーザー」をモデル化する必要があります。

"posts": { 
    "post_id" : { 
     "author": "username", 
     "body": "Some content", 
     "starCount": 1 
     "title": "Some title", 
     "uid": "author_id" 
    } 
}, 
"upvotes": { 
    "post_id" : { 
     "user_id_who_gave_star" : "true" 
    } 
} 
+0

ただし、ユーザーが特定の投稿にスタ​​ーを付けた場合、他の解決策はありますか? – ThirdMartian

関連する問題