2016-09-20 4 views
0

Docを読み込んだ後でも、Firebaseのpush()の機能について混乱します。 - 、またはそれは単にユニークな「汚れ」を作成しないFirebase push()とメインスレッド

// Generate a reference to a new location and add some data using push() 
var newPostRef = postsRef.push(); 
// Get the unique ID generated by push() 
var postID = newPostRef.key(); 

んプッシュ()は(スマートではないようですので、メインスレッドを遅れ)一意のIDを取得するには、サーバーのクエリを実施:彼らは、次のコードを提示します後でサーバーのマスター元帳との一意性をチェックするID?ドキュメントのIDの堅牢性は不明確です。確認したいのですが。

+1

何らかの理由で、IDが現在の時刻に基づいているという印象を受けました。これは、毎秒何千ものリクエストがない限り、衝突の可能性は非常に低くなります。だから私はそれは全部の話ではないと思う... – qxz

答えて

0

Firebaseのpush()メソッドは、純粋なクライアント側のメソッドです。現在の時刻(サーバーからのローカル時計の最後の既知のオフセットに対して修正された)と多くのランダム情報に基づいてキーを生成します。生成する鍵は統計的に一意であることが保証されています。

これらのキーの詳細については、このブログの記事The 2^120 Ways to Ensure Unique Identifiersを参照してください。

+0

ああ、このメソッドとParseの汚いフィールドメソッドの意見はありますか?両方とも実際に機能しているようです。 –

+2

いいえ、私は2つを比較する上で追加するものは何もありません。衝突を恐れている場合:私はFirebaseと長い間協力しており、プッシュIDでの衝突は見たこともなく(レポートも聞いたことがない)最初にUUIDについて学んだときと同じです。最初は、それらを信頼するのが非常に不快であると感じます。しかし、しばらくすると、 "統計的に保証されている"ことはかなり可能性が高いことに気付きます。 –

関連する問題