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だけで作業しています。
このようなシーケンシャルキーは、接続性の欠如にも対処する必要があるマルチユーザー分散システムのスケーラビリティを本質的に制限します。これが、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
プロパティを現在の最大のシーケンス番号で保持し、トランザクションを使用してそれを更新することです。