2016-04-14 8 views
0

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.

Antwort

0

Sie sind eine andere API, so macht es die Dinge anders aber die gleiche Information da seine

zum Beispiel den Weg der Daten in einem Schnappschuss zu bekommen:..

snapshot.getRef().toString().substring(snapshot.getRef().getRoot().toString().length()) 

auf dem Andererseits, wenn Sie das wollen Informationen, wie sie von der REST-API geliefert werden, können Sie auch die REST-API von Java verwenden.

+0

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

+0

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))) –

+0

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

Verwandte Themen