2016-04-14 18 views
0

İlk kez Firebase ile prototipleme yaparken, güncelleme olaylarını akışa almak için bir SSEClient API'si olan Python'u kullandım. Ve beklediğim gibi çalıştı; Ben tüm belge abone ve sadece/v_42/LASTUPDATE burada güncellenen, ben gibi bir SSE olay alacağı ise: Firebase Java Event API dönüş olaylarını SSE API'sı gibi nasıl yapabilirim?

{ "event": "put", 
    "data" :{"path":"/v_42/lastUpdate","data":{"timestamp":9052758}}} 

Java API kullanarak bir güncelleme belirli bir yolunu almanın bir yolu var mı ? Bulabileceğim yakın şey

firebase.addChildEventListener(new ChildEventListener() { 
    public void onChildChanged(DataSnapshot snapshot, String previousChildKey) { ... } 

... ama snapshot.getKey() yalnızca üst düzey anahtarı (yani "v_42" değil tüm değişim yolu döndürür.

cevap

0

Sen 'farklı bir API kullanarak yeniden, bu yüzden farklı şeyler ortaya çıkarır Ancak aynı bilgiler var olacak

Örneğin, bir anlık veri yolunu almak için:.. Açık

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

eğer istersen REST API'sı tarafından sağlanan bilgiler, REST API'sini Java'dan da kullanabilirsiniz.

+0

Yanıt için teşekkürler! Ama bunu denediğimde, sadece "/ v_42" değil "/ v_42/lastUpdate". ReST API'sini kullanmadan ikincisini geri almanın bir yolu var mı? Java API ile değiştirilen ağacın gerçek kısmını nasıl algılayabilirim? Ekstra bağımlılıklar ve ek yük nedeniyle gerekmediysem ReST kullanmamayı tercih ederim. – RMHarris157

+0

Bu, dinleyiciyi nereye taktığınıza bağlıdır. Bir çocuk dinleyici kullandığınızdan, ana düğümün seviyesini hala özlüyor olabilirsiniz. Ancak aynı REST API'sini kullanmak istemiyorsanız, diğer mantığı değiştirmek için de zaman ayırmalısınız. Yolu yeniden yapılandırması gereken geliştiricileri gördüğüm pek çok vaka yok. Bunu yapmak mümkün olsa da, birkaç adım geri çekerseniz daha iyi çözümler vardır (bkz. [XY problemi] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)) –

+0

Bunun tipik kullanım durumu olmadığından emin olabilirim - Firebase'i bir mobil kullanıcı arabirimi tarafından güncellenecek bir belge modeli koleksiyonu tutmak için kullanıyorum, ancak alt arabirim nedeniyle, yalnızca değişiklikleri gönderebilirim bir öznitelikteki modele (tam belge yardımcısı) seri komut olarak. UI, belgeye güncellenmiş özniteliği almayı umduğum FB'ye tek bir öznitelik güncellemesi uygular, bu da daha sonra yeniden serileştirilip alt sisteme iletilebilir. – RMHarris157