Ich speichere Elemente Street
mit der FireBase push
und erhalten Sie eine Liste der Street
Elemente mit automatisch generierten IDs richtig. Nehmen wir an, jeder Street
hat einen Knoten wie "path" : "unique value"
. Angenommen, zwei Benutzer werden gerade eine neue Street
einfügen, die dieselbe "path" : "unique value"
hat.Wie sollte ich diese Situation in FireBase behandeln, wo zwei Benutzer für den gleichen Datenbankschlüssel gehen
Was ist ein geeigneter Weg, dies zu vermeiden? Es ist wie ein Webshop, in dem der Benutzer einen Artikel in den Warenkorb legt und das System, das sich hinter ihm befindet, muss diesen Artikel reservieren, bis der Nutzer ihn kauft.
Sollte ich einen separaten FireBase-Stamm wie "reserved_streets" erstellen und Benutzer seine reservierte Street
zusammen mit user.id hinzufügen, bis er es kaufen? Vielleicht sollte eine Servlet-Instanz ausgeführt werden, die Einträge entfernt, die 10 Minuten alt sind.
Die Street
Liste kann sehr groß sein, vielleicht 100 Millionen in rar Fällen
Mein Gott, das ist elegant –
Aber bis die 'Straße' erstellt wird, ja natürlich Benutzer seine Straße in den Korb setzen muss auch seine Straße zu' pathsToStreets' hinzufügen. Jetzt können andere Benutzer die 'pathsToStreets' überprüfen und sehen, ob die' street' reserviert ist. Wenn der erste Benutzer weitergeht und dann kauft, wird die 'Straße' -" -K1234567 "erstellt. Mein Gott Zeit für einen Donat –
Aber was ist, wenn der erste Benutzer die 'Straße' nicht kauft und er den Eintrag nicht von' pathsToStreets' entfernt, weil ein Gerät abstürzt oder ein System ausfällt. Vielleicht mit einer Servlet-Instanz, die Einträge entfernt. Was denken Sie? –