web-dev-qa-db-ja.com

Firebaseで自動インクリメントキーを作成するにはどうすればよいですか?

SQLと同じように、Firebaseで自動インクリメントID(キー)を作成できるかどうか疑問に思いました。

このような構造を作りたかったのです

rules:
  Line1:
    1: Smith
    2: Alex
    3: Hello
  Line2:
    1: Brown
    2: Michael

したがって、1行目に「Erik」を追加する場合は、次のようにする必要があります。

Line1:
    1: Smith
    2: Alex
    3: Hello
    4: Erik

そのような構造を持つことは可能ですか?

私は私たちが持っていることを知っています

押す()

そして

childByAutoId()

しかし、これは私の問題には合いません。私はSwift iOSだけで作業しています。

8
Neel Patel

このようなシーケンシャルキーは、接続性の欠如にも対処する必要があるマルチユーザー分散システムのスケーラビリティを本質的に制限します。これが、Firebaseがそれらをサポートしていない理由の1つです。

代わりに、FirebaseにはプッシュIDと呼ばれる独自のキータイプがあります。あなたが探しているシーケンスのように、これらは単調に増加しており、それらはまたユニークであることが保証されています。ただし、大きな違いは、ほとんどのSQLデータベースのシーケンス番号とは異なり、プッシュIDはクライアント側で判別できることです。

Firebaseの配列(シーケンスに類似)の詳細については、次のブログ投稿を参照してください: https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html

FirebaseのプッシュIDの詳細については、次のブログ投稿をご覧ください: https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html

それでもシーケンシャルIDを使用する必要があると判断した場合は、加藤の実装をここで確認してください: http://jsfiddle.net/katowulf/5ESSp/ 。この中核となるのは、データベースにcounterプロパティを現在の最大のシーケンス番号で保持し、トランザクションを使用してそれを更新することです。

10