Als ich das erste Prototyping mit Firebase ausführte, verwendete ich Python mit einer SSEClient-API, um Aktualisierungsereignisse zu streamen. Und es hat funktioniert, wie ich es erwartet habe; Wenn ich auf das gesamte Dokument abonniert und wenn ich nur/v_42/lastupdate darin aktualisiert, würde ich eine SSE-Ereignis erhalten wie:Wie kann ich die Firebase Java Event API Ereignisse wie die SSE API zurückgeben lassen?
{ "event": "put",
"data" :{"path":"/v_42/lastUpdate","data":{"timestamp":9052758}}}
Gibt es eine Möglichkeit, einen bestimmten Pfad eines Updates zu erhalten, die Java-API ? Das nächste, was ich finden kann, ist
firebase.addChildEventListener(new ChildEventListener() {
public void onChildChanged(DataSnapshot snapshot, String previousChildKey) { ... }
... aber die snapshot.getKey() gibt nur die Top-Level-Taste (dh „v_42“, nicht den gesamten Weg der Veränderung.
Danke für die Antwort! Aber wenn ich das versuche, bekomme ich nur "/ v_42" und nicht "/ v_42/lastUpdate" zurück. Gibt es eine Möglichkeit, diese ohne die ReST API zurück zu bekommen? Wie kann ich den tatsächlichen Teil des Baums erkennen, der mit der Java-API geändert wurde? Ich würde ReST lieber nicht verwenden, wenn ich aufgrund zusätzlicher Abhängigkeiten und Overhead nicht hätte. – RMHarris157
Das hängt davon ab, wo Sie den Listener angeschlossen haben. Da Sie einen untergeordneten Listener verwenden, können Sie die Ebene des übergeordneten Knotens immer noch übersehen. Wenn Sie jedoch nicht die gleiche REST-API verwenden möchten, sollten Sie wirklich Zeit investieren, um auch die andere Logik zu ändern. Es gibt nicht viele Fälle, in denen ich Entwickler sehe, die den Pfad rekonstruieren müssen. Während es möglich ist, gibt es oft bessere Lösungen, wenn Sie ein paar Schritte zurückgehen (siehe [XY-Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem))) –
Ich bin sicher, dass dies nicht der typische Anwendungsfall ist - Ich verwende Firebase, um eine Sammlung von Dokumentmodellen zu halten, die von einer mobilen UI aktualisiert werden, aber wegen der Downstream-Schnittstelle kann ich nur die Änderungen senden zum Modell über ein Attribut (vice complete document) als seriellen Befehl. Die Benutzeroberfläche erzwingt eine einzelne Attributaktualisierung für den FB, auf die ich hoffte, das aktualisierte Attribut im Dokument zu erhalten, das dann erneut serialisiert und an das nachgelagerte System übertragen werden konnte. – RMHarris157