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