2016-04-14 6 views
0

Когда я был первым прототипом с Firebase, я использовал Python с API SSEClient для обновления событий обновления. И это сработало, как я ожидал; Если я подписался на весь документ, и если я обновил только/v_42/lastUpdate в нем, я хотел бы получить событие SSE, таких как:Как мне вернуть события события Firebase Java Event API как API SSE?

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

Есть ли способ, чтобы получить конкретный путь обновления с помощью Java API ? Ближайший вещь, которую я могу найти

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

... но snapshot.getKey() возвращает только ключ верхнего уровня (например, «v_42», а не весь путь изменения.

ответ

0

Вы «повторно с использованием другого API, поэтому он выставляет вещи по-другому Но та же информация будет там

Например, чтобы получить путь данных в снимок:..

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

на с другой стороны, если вы хотите информация, предоставляемая REST API, вы также можете использовать REST API с Java.

+0

Спасибо за ответ! Но когда я пытаюсь это сделать, я возвращаюсь «/ v_42» не «/ v_42/lastUpdate». Есть ли способ вернуть последнего без использования API-интерфейса ReST? Как определить фактическую часть дерева, которое было изменено с помощью Java API? Я бы предпочел не использовать ReST, если бы мне не пришлось из-за дополнительных зависимостей и накладных расходов. – RMHarris157

+0

Это зависит от того, где вы подключили слушателя. Поскольку вы используете дочерний слушатель, вы все равно можете пропустить уровень родительского узла. Но если вы не собираетесь использовать один и тот же REST API, вы должны действительно инвестировать время, чтобы изменить другую логику. Есть не так много случаев, когда я вижу разработчиков, которым необходимо восстановить путь. Хотя это возможно, часто есть лучшие решения, если вы сделаете несколько шагов назад (см. [Проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)) –

+0

Я уверен, что это не типичный прецедент - я использую Firebase для хранения коллекции моделей документов, которые будут обновляться с помощью мобильного интерфейса, но из-за интерфейса ниже по потоку я могу только отправлять изменения к модели по атрибуту (недостающий полный документ) в качестве последовательной команды. Пользовательский интерфейс обеспечивает обновление одного атрибута FB, к которому я надеялся просто получить обновленный атрибут в документе, который затем может быть повторно сериализован и передан в нисходящую систему. – RMHarris157