私は単純な概念だと思ったことを頭の中に入れようとしています。Firebase User photoURLとdisplayName
私はユーザーにサインアップするアプリを持っており、そのユーザーはFirebase Authシステムの「ユーザー」情報に「フォトURL」を設定することができます。これは機能します。ユーザーが自分のアプリに投稿を作成すると、作成者のタイトル、画像、 「photoURL」を表示します。
現在、私は記事を保存します。
-Post {
-id
-title
-image
-photoURL <- from current logged in user }
私はまた、ユーザーは、ルーティングを経由してポスターのページを訪問することができ/ポスター/「のdisplayName」
ので、後に、ユーザーは次のように自分のプロファイル情報を更新しますdisplayNameまたはphotoURL、私はすべての投稿、コメント、メッセージ、返信、およびこのユーザーがレコードを持っている他の場所を見つけて、photoURLを更新する必要がありますか?
私は私が行うことができるだろうと思ったことは言うされています(擬似コード)
get all posts =>
foreach(post)
post = {
title: post.title.val()
image: post.image.val()
avatar: firebase.database().ref().child('users' + post.key)
}
私が読んですべてが私は自分の "ユーザーの表にそのphotoURLを保存する必要があると述べています。私がそれを行うならば、変更があるたびにそれを行うサーバー呼び出しを書き込まない限り、どのポストも更新されません。問題は、ユーザーが100,000人で、そのうちの10%がフォトURLを変更した場合、ユーザーごとに投稿、コメント、返信、およびメッセージを変更する必要があるということです。平均的なユーザーが100件の投稿、4000件のコメント、6000件の回答を持っている場合、更新する必要のある約10Kのユーザー* 10Kのユーザーが見えます。平均サーバーコールが137ミリ秒の場合は、約175ドルです(costs)
もう1つの方法は、2つのテーブルから情報を取得し、毎回新しいオブジェクトを作成することです。これにより、サーバーの呼び出しと時間が約2倍になり、コストが倍増します。
これは最適なアプローチですか?ユーザーの写真と表示名を取得するほうがずっと簡単だと思いました。
叙事詩の長いポストに申し訳ありませんが、私は学びたいと思っています。皆さんありがとう!
はい私は文字列を更新していますが、私はそれを何度もやっています。関数では1トン、サーバ時間では1ミリ秒かかるだろうか? – DKinnison