2017-02-21 6 views
2

In meiner Android-App verwende ich clientseitige Fan-out, um Daten an mehrere Orte in der Datenbank gleichzeitig zu übertragen, um Probleme zu vermeiden, zum Beispiel im Falle einer verlorenen Internetverbindung. Hier ist Beispielcode von Firebase Blog:Upload in Datenbank und Speicher zur gleichen Zeit in Firebase

Map updatedUser = new HashMap(); 
newPost.put("name", "Shannon"); 
newPost.put("username": "shannonrules"); 

Firebase ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/"); 

Map fanoutObject = new HashMap(); 
fanoutObject.put("https://stackoverflow.com/users/1", updatedUser); 
fanoutObject.put("/usersWhoAreCool/1", updatedUser); 
fanoutObject.put("/usersToGiveFreeStuffTo/1", updatedUser); 

ref.updateChildren(fanoutObject); // atomic updating goodness 

Aber jetzt würde ich auch neben dieser Bilddatendatei Speicherung laden möge. Ist das möglich, das gleichzeitig zu tun?

+0

Wie Cedric geantwortet hat, gibt es keine Möglichkeit, in einem einzigen Vorgang auf mehrere Firebase-Funktionen zu schreiben. –

Antwort

2

Ich glaube nicht, dass Sie Anrufe auf Firebase-Datenbank und Speicher synchronisieren können. Die Dokumentation erwähnt es nirgends.

Aber nur, damit Sie wissen: Firebase speichert alle von updateChildren() gestellten Anforderungen im Cache, wenn sie aufgrund eines Verbindungsabbruchs nicht gesendet werden können. Wenn der Benutzer die Verbindung wieder herstellt, sendet Firebase alle zwischengespeicherten Anforderungen in der Reihenfolge, in der sie gespeichert wurden.

0

Ein Weg, um diese beiden Aufgaben gleichzeitig zu tun wäre, zuerst Ihren Dateipfad in Storage zu ermitteln, und starten Sie den Upload, dann verwenden Sie auch diesen Dateipfad, um die Datenbank zu aktualisieren. Das ist ungefähr so ​​gut, wie du es bekommen wirst.

Die meiste Zeit jedoch möchten Sie die "Download-URL" der hochgeladenen Datei in der Datenbank speichern, anstatt den Pfad im Speicherbereich. Dies erleichtert es den Kunden, direkt zum Inhalt zu gelangen, ohne zuerst die Download-URL "nachschlagen" zu müssen. In diesem Fall müssen Sie wirklich warten, bis der Speicher-Upload abgeschlossen ist, die Download-URL von der UploadTask abrufen und dann die Datenbank mit dieser Zeichenfolge aktualisieren. Sie können die Download-URL vor dem Senden des Uploads nicht kennen.

Verwandte Themen