Следующая цитата взята из блога Google Developer.https://developers.googleblog.com/2017/08/hamilton-app-takes-stage.html
Например, когда кто-то участвует в лотерее, приложение сначала записывает данные в определенные узлы в базе данных реального времени, а правила безопасности базы данных помогают убедиться в их достоверности.Запись запускает облачную функцию, которая запускает бизнес-логику и сохраняет свой результат в новом узле в базе данных реального времени.Вновь записанные данные результатов затем автоматически передаются в приложение.
Я понимаю, что вместо того, чтобы делать запрос и ожидать запроса, они следовали следующей схеме:
- Запись в базу данных реального времени
- Запись запускает действие
- Действие вызывает некоторую логику и функцию
- Функция записывает данные обратно в базу данных
- Слушатель в приложении получает уведомление о данных, записанных в 4.
- Приложение обновляет пользовательский интерфейс или предпринимает какие-либо действия.
Приложение Hamilton следовало этому шаблону, когда кто-то вступает в соревнование забилет.Моя основная проблема с шаблоном заключается в том, что если соединение не подключено, мы не получим результаты и в то же время не получим ошибку.Изменения будут обновлены локально, и Firebase обновит при следующем подключении, что приведет к беспорядку, так как пользователь ожидает результата.
Мне было интересно, есть ли простой способ или шаблонследовать, поэтому мы получим ошибку и отобразим ее.
Первое, что приходит мне в голову, - это как-то добавить время для операции сохранения.Если сохранение не выполнено в действующей базе данных в течение x секунд, то мы отображаем ошибку.В то же время нам также потребуется время ожидания ответа.Поэтому, если мы не получаем ответ в течение x секунд, мы показываем что-то пользователю.
Надеюсь, меня это не смущает, так как я плохо разбирался в шаблоне.Я боролся с названием, поэтому, если кто-то может улучшить его, пожалуйста, будьте моим гостем.