Запросить документ Firestore, только если он был обновлен? - PullRequest
1 голос
/ 06 марта 2020

Предположим, у меня есть простой документ:

Company
(sub collections)
- employees
(fields)
- name
- address

Поскольку список сотрудников в компании, вероятно, будет меняться не часто, это уменьшит мое число операций чтения, если я смогу кешировать информацию и обновлять только тогда, когда он изменился. Я знаю, что у Firestore есть постоянство в автономном режиме, но в документации 1005 * не совсем ясно, что именно происходит за кулисами. Есть ли способ для Firestore обрабатывать это автоматически, или мне нужно было бы добавить поле last_updated к каждому документу сотрудника и запрос на сотрудников, обновленный более недавно, чем в прошлый раз, когда мой клиент выполнил запрос?

1 Ответ

2 голосов
/ 06 марта 2020

Если вы хотите узнать, обновлялся ли документ в Firestore из клиентского приложения, единственный способ сделать это - прочитать его. Там нет замены для этого. Автономное постоянство включается и обслуживает запросы только в том случае, если облачная служба Firestore недоступна или если вы используете параметр источника , чтобы указать, что вы хотите просматривать только кэш.

Вы можете на самом деле есть запрос клиента только для обновлений документов, у которых поле last_updated больше, чем время его последнего запроса. Имейте в виду, что выполнение этого запроса по-прежнему стоит как минимум на 1 чтение, даже если запрос не дает документов, что покрывает стоимость доступа к базовому индексу.

Вы также можете использовать облачные функции для запуска изменение документа, затем используйте уведомление pu sh, чтобы сообщить клиенту, что документ обновлен. Затем он может go прочитать этот документ для хранения в кэше.

Имейте в виду, что, если вы слишком сильно опираетесь на кэш клиента, вы можете столкнуться с проблемами, когда документы будут удалены по какой-либо причине (например, , если его емкость превышена). Ничто не скажет вам, когда это произойдет, и теперь ваш локальный кеш дает неполные результаты. Чтобы избежать этой ситуации, у вас должен быть свой собственный локальный кеш / база данных, которую вы полностью контролируете.

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