Недействительный кеш клиента Firestore после удаленных изменений - PullRequest
0 голосов
/ 26 сентября 2019

Я использую клиентскую библиотеку Firebase Firestore с поддержкой кэша в проекте Android с .setPersistenceEnabled(true).Firebase хорошо синхронизируется и получает данные с сервера, если я изменяю базу данных Firestore напрямую из кода Android.

Однако, если я изменяю данные документов удаленно с помощью облачных функций или с помощью Firestore Admin SDK, клиентне получает уведомления об аннулировании кэша и извлекает данные из кэша, даже если он устарел.Я предполагаю, что у Firebase есть некоторая логика, которая помечает документы, синхронизированы они или нет.

Поддерживает ли Firebase пометить определенный документ как «устаревший», что заставляет клиентов автоматически аннулировать свой кэш?

Если это не так, я должен уведомить своих клиентов о том, что их кэш должен быть аннулирован вручную через .clearPersistence().Я рассмотрел следующие, но не очень удобные варианты:

  • Отправка push-уведомлений с помощью FCM
  • Использование параметра Firebase Remote Config

Есть ли какие-либодругие, более эффективные и удобные варианты для реализации той же функциональности?

1 Ответ

0 голосов
/ 26 сентября 2019

Однако, если я изменяю данные документов удаленно с помощью облачных функций или с помощью Firestore Admin SDK, клиент не получает уведомление о недействительности кэша и получает данные из кэша, даже если он устарел.

Оказалось, что я неверно извлек данные.У меня есть коллекция с несколькими документами, и я запросил данные типа .collection("users").get() и сериализовал документы, обработав каждый documentSnapshot вручную.Вот почему клиенты получают кэшированные, устаревшие данные.

После того, как я получил данные, запросив конкретные документы, такие как .collection("users").document("userId").get(), клиенты аннулировали кэш и получили правильные данные из сети.

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