2016-09-02 4 views
5

In meiner Firebase-Datenbank brauche ich zwei Schreibzugriffe auf zwei Standorte gleichzeitig. Ich habe Regeln für beide Standorte, die sicherstellen, dass ein Benutzer dort nicht schreiben kann, ohne gleichzeitig an den anderen Ort zu schreiben.Wie kann ich eine Transaktion verwenden, während in Firebase ein Update für mehrere Standorte durchgeführt wird?

Das Schreiben an eine dieser Stellen muss inkrementiert/dekrementiert werden. Natürlich muss dies über eine Transaktion geschehen, ansonsten kann ich nicht garantieren, dass der Benutzer die gleichzeitige Inkrement/Dekrement-Aktualisierung eines anderen Benutzers nicht auf denselben Knoten überschreibt.

Das Problem ist, ich kann keine Dokumentation über die Kombination von Multi-Location-Updates mit Transaktionen finden. Ist das nicht möglich?

Antwort

6

Nein. Transaktionen funktionieren auf einem einzelnen Knoten.

Das bedeutet, wenn Sie eine Transaktion mit mehreren Standorten ausführen möchten, müssen Sie diese Transaktion im Wesentlichen auf dem Knoten mit der niedrigsten gemeinsamen Ebene in der Struktur ausführen. Das ist kaum eine gute Idee.

Die Alternative wäre, das Schreiben über mehrere Standorte mit serverseitigen Sicherheitsregeln zu sichern. Ein Beispiel hierfür finden Sie unter Is the way the Firebase database quickstart handles counts secure?, das im Wesentlichen eine Vergleichsoperation unter Verwendung von Sicherheitsregeln erstellt.

+0

Warum ist eine Transaktion am untersten Knoten "kaum eine gute Idee"? – Junior

+1

Da es sich bei dieser Frage um das Aktualisieren mehrerer Standorte mit einem Aufruf handelt, ist der "gemeinsam genutzte Knoten auf der untersten Ebene" im JSON-Baum wahrscheinlich höher als bei einer einzelnen Entität. Dies bedeutet, dass die Wahrscheinlichkeit von Ressourcenkonflikten viel größer ist, was die Skalierbarkeit von Transaktionen verringert. –

+0

Oh ja. Danke für die Antwort. Das macht Sinn. – Junior

Verwandte Themen