Как выполнять транзакции в firestore, когда пользователь не в сети? - PullRequest
0 голосов
/ 15 января 2019

Я создаю многостраничное приложение, в котором мне нужно создавать и хранить транзакции, даже когда пользователи не в сети. Как мне добиться этого с помощью Firestore? Также мне нужно кое-что узнать о том, как сохранить данные, полученные из пожарного хранилища локально.

1 Ответ

0 голосов
/ 15 января 2019

Как выполнять транзакции в пожарном депо, когда пользователь не в сети?

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

Также мне нужно знать, как сохранить данные, полученные из пожарного хранилища локально.

В соответствии с официальной документацией Cloud Firestore относительно сохраняемости в автономном режиме :

  • Для Android и iOS автономное сохранение включено по умолчанию. Чтобы отключить постоянство, установите для параметра PersistenceEnabled значение false.

  • Для Интернета автономное сохранение по умолчанию отключено. Чтобы включить постоянство, вызовите метод enablePersistence. Кэш Cloud Firestore не очищается автоматически между сессиями. Следовательно, если ваше веб-приложение обрабатывает конфиденциальную информацию, не забудьте спросить пользователя, находится ли он на доверенном устройстве, прежде чем включать постоянство.

Важное замечание. Для Интернета автономное сохранение - это экспериментальная функция, которая поддерживается только веб-браузерами Chrome, Safari и Firefox. Кроме того, если пользователь открывает несколько вкладок браузера, указывающих на одну и ту же базу данных Cloud Firestore, и автономное сохранение включено, Cloud Firestore будет работать правильно только на первой вкладке.

Edit:

Firestore SDK для Android имеет локальный кэш , который включен по умолчанию. Таким образом, все операции чтения будут поступать из кэша, если на сервере нет обновлений. Таким образом, Firestore предоставляет эту функцию для обработки автономных данных. Это означает, что если пользователь пытается добавить / удалить документы в автономном режиме, каждая операция добавляется в очередь. Как только пользователь восстановит соединение, все изменения, сделанные в автономном режиме, будут обновляться на серверах Firebase. Другими словами, все запросы будут отправлены на сервер.

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

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