2013-08-23 5 views
4

В обработчике onDisconnect() Firebase вы можете легко использовать setValue(), чтобы обновить ссылку на другое значение или remove(), чтобы удалить эту ссылку.Устанавливать приоритет только в Firebase onDisconnect()

Для setValue() существуют также варианты, которые включают значение приоритета.

Но какова наилучшая практика, если вы хотите обновить значение приоритета только, а не значение?

Нечто вроде onDisconnect().setPriority(Double.MAX_VALUE) похоже отсутствует.

Вручную повторное получение текущего значения в заданной ссылке и передача этого значения в setValue() не только слишком сложна, но и невозможна как последнее, быстрое действие, когда пользователь отключился.

Edit:

onDisconnect() даже не может быть использован с onDisconnect().removeValue() или onDisconnect().setValue(null) вообще. Проблема в том, что вы не можете отключить пользователя вручную, не так ли? Это не может быть оптимальным решением. Как и сейчас, вам нужно подождать, пока GC GC GC очистит все ссылки Firebase, и, надеюсь, тогда, по крайней мере, соединение будет закрыто, так что вызовы onDisconnect() будут запущены, не будут Это?

+0

Как вы уже сказали, нет setPriority() для onDisconnect(). Можете ли вы поделиться случаем использования, который вы пытаетесь удовлетворить? Вероятно, было бы легче придумать творческие решения, если бы у нас была корневая проблема. – Kato

+0

Это несогласованность в API: Каждая ссылка Firebase имеет 'setValue (значение, приоритет)' и 'setPriority (priority)'. Напротив, 'onDisconnect()' имеет 'setValue (значение, приоритет)', в то время как у него _ не существует 'setPriority()'. Имеет ли это смысл? Проблема: я поддерживаю список всех пользователей в '/ users' и сохраняю там все данные профиля. Чтобы предоставить список пользователей, которые сейчас находятся в сети, я использую 'setPriority (1)' в пользовательской ссылке при входе пользователя. Если бы я мог использовать 'setPriority (0)' on' onDisconnect() ', I может показать присутствие с 'startAt (1)'. Имеет ли это смысл? – caw

+0

Конечно, я мог бы поддерживать дополнительный список пользователей, которые сейчас находятся в сети, скажем, '/ users_online'. Но сохранение состояния там было бы излишним и неэффективным. Почему это, если можно сделать API более последовательным и решить эту проблему более легко? Или мне не хватает простого решения? – caw

ответ

-1

setPriority() для onDisconnect() в настоящее время.

Однако у Firebase есть mentioned их намерение добавить эту функцию в будущую версию: «Да, мы собираемся добавить это в будущем! Нет ETA в это время».

Смежные вопросы