Отменить загрузку Firebase, если она не завершена через несколько секунд - PullRequest
0 голосов
/ 11 мая 2019

Я загружаю int в firebase. Если загрузка не завершена после первой попытки, через некоторое время (несколько секунд) загрузка должна быть отменена.

Прямо сейчас это тот случай, когда вы загружаете значение, но у вас нет подключения к Интернету, он ждет, пока соединения снова не установятся, и загрузит значение, чем. Это может быть, например, через 30 минут.

Проблема в том, что это загруженное значение уже устарело для моей цели. Мне нужно отменить загрузку, если она не завершена после первой попытки. Как я могу это сделать?

mDatabase = FirebaseDatabase.getInstance().getReference().child("Survey").child("Solution1").child("Result");
mDatabase.setValue(i1);

Ответы [ 2 ]

1 голос
/ 11 мая 2019

Вы не можете отменить запись в базу данных в реальном времени.Вместо этого вы можете просто переписать предыдущее значение в том же месте.Если вы не знаете предыдущее значение, вы как бы застряли и должны признать, что записанное вами значение будет в конечном итоге синхронизировано.

Возможно, вы позже попытаетесь отменить запись в облаке.Функции срабатывают, но вам нужно выяснить, в какой момент это значение устарело, используя только информацию, предоставленную триггеру.

0 голосов
/ 12 мая 2019

Как сказал Дуг, нет способа отменить определенную запись, как только она была поставлена ​​в очередь.

Есть два способа реализовать (или хотя бы приблизить) ваш вариант использования:

  1. Определите, подключен ли клиент к бэкэнду Firebase, прежде чем ставить запись в очередь.Для этого вы должны использовать дополнительный прослушиватель узла .info/connected, как показано в документации по обнаружение состояния соединения .Просто получите прослушиватель верхнего уровня, а затем проверьте, какое последнее значение было перед вызовом setValue().
  2. . Вы можете очистить все ожидающие записи, вызвав FirebaseDatabase.getInstance().purgeOutstandingWrites().Таким образом, вы можете позвонить до вызова setValue().

В качестве альтернативы: попробуйте просто пропустить несколько записей.Сервер обычно обрабатывает их в быстрой последовательности и может даже не отправлять устаревшие клиентам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...