Когда вы говорите: «Моя (недопустимая) задача записи вернет успех, если устройство находится в автономном режиме», это не совсем так, как оно работает.Когда вы пишете документ в Firestore, SDK подтвердит запись только в том случае, если приложение подключено к сети, а сервер подтверждает, что оно написано.Когда вы выполняете запись, API даст вам некоторый контроль над этой операцией (задача Android, обещание JavaScript) будет завершена или решена, когда запись действительно закончится.
Если вы в автономном режиме, выВы никогда не узнаете наверняка, сработала ли запись, но написанный документ все равно будет отображаться в запросах.Если вы хотите узнать, завершил ли этот документ свою запись, вам нужно будет запросить метаданные для этого документа и проверить, есть ли у этого документа ожидающая запись.Например, в Android используйте hasPendingWrites () , чтобы узнать, был ли написан документ, который у вас в руке.
SDK не предоставляет вам способа узнать, когда ваши документысинхронизировать после того, как это холодно загружено.Но вы можете взять дело в свои руки, запомнив все пути документов, которые важно отслеживать, сохраните их локально, а затем загрузите эти пути при холодной загрузке, чтобы проверить их успешность.Вы добавили бы слушателей к этим документам и проверили бы:
- Если документ не существует, это означает, что запись была отклонена до того, как вы прикрепили слушателя.
- Если документ существуети hasPendingWrites (), что означает, что синхронизация еще не завершена.
- Если документ существует без ожидающих записей, он был успешно синхронизирован.
Эта стратегия работает только для добавления новыхдокументы.Для обновления документов это сложнее, потому что документ без отложенной записи может быть просто старой версией документа до того, как произошла ошибка синхронизации обновления.Поэтому вам нужно добавить в обновление другое поле, указывающее, успешно ли выполнено обновление.