2016-09-15 1 views
3

Ich frage mich, ob wir Auto-Inkrement-IDs (Keys) in Firebase erstellen könnten, wie wir es in SQL haben!Wie wird in Firebase ein automatisch inkrementierter Schlüssel erstellt?

ich so lets sagen eine Struktur wie diese

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

zu schaffen fehlte, wenn ich „Erik“ auf Linie 1 sollte es tun wie dieses

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

hinzufügen möchten Ist es möglich, eine solche Struktur haben?

Ich weiß wir

Push()

und

childByAutoId()

haben, aber dies für mein Problem nicht passt. Ich arbeite gerade mit Swift iOS.

Antwort

5

Solche sequenziellen Schlüssel begrenzen inhärent die Skalierbarkeit eines verteilten Systems mit mehreren Benutzern, das auch mit einem Mangel an Konnektivität fertig werden muss. Das ist einer der Gründe, warum Firebase sie nicht unterstützt.

Stattdessen hat Firebase einen eigenen Schlüsseltyp mit der Bezeichnung Push-IDs. Wie die Sequenz, die Sie suchen, sind diese monoton steigend, und sie sind garantiert auch einzigartig. Der große Unterschied besteht jedoch darin, dass Push-IDs im Gegensatz zu den Sequenznummern der meisten SQL-Datenbanken clientseitig ermittelt werden können. Weitere Informationen zu Arrays (die Sequenzen ähneln) in Firebase finden Sie in diesem Blogbeitrag: https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html.

Für weitere Informationen über Firebase Push-IDs finden Sie in diesem Blog-Post: https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html

Wenn Sie immer noch entscheiden, dass Sie sequenzielle IDs verwenden müssen, haben einen Blick auf Kato Umsetzung dieser hier: http://jsfiddle.net/katowulf/5ESSp/. Der Kern davon ist, eine counter-Eigenschaft in der Datenbank mit der aktuellen höchsten Sequenznummer zu behalten und dann eine Transaktion zu verwenden, um diese zu aktualisieren.

+0

Vielen Dank für Ihre Antwort, so dass ich grundsätzlich "push()" verwenden kann, um geordnete Zahlen zu erstellen statt "1: Name 2: Name" würde es so funktionieren "'pushid1': Name 'pushid2': name '? –

+0

Wenn Sie eine chronologisch sortierte Sammlung von Kindern in Firebase möchten, ist es in der Tat üblich, Push zu verwenden. –

Verwandte Themen