Firestore for web - при автономной записи, выбрасывайте, а не сохраняйте локально & syn c при восстановлении соединения - PullRequest
0 голосов
/ 10 февраля 2020

Насколько я понимаю, Firestore по умолчанию работает таким образом, что если запись выполняется, но клиент находится в автономном режиме, запись сохраняется локально, а затем отправляется на сервер после восстановления соединения.

Это нежелательное поведение для меня, поскольку:

  • У меня есть приложение, которое хранит некоторые данные.
  • Несколько пользователей могут обновлять одни и те же данные.
  • Насколько я понимаю, если пользователь A сохраняет локальную запись из-за сетевых ошибок, то пользователь B вносит некоторые изменения, затем пользователь A возобновляет подключение, тогда запись A пользователя перезаписывает изменения пользователя B.

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

Мой текущий код:

    firestore
      .collection("someData")
      .doc(props.id)
      .set({ contentState: content }, { merge: true })
      .catch(x => {
        console.log("Error!");
        setSyncError(true);
      });

Уловка c никогда не срабатывает, я предполагаю, что это потому, что буфер офлайн-записи возможность включена по умолчанию.

1 Ответ

1 голос
/ 10 февраля 2020

Вы упомянули "Firestore for web" в заголовке вашего вопроса.

Обратите внимание, что для сети автономное сохранение по умолчанию отключено , как описано в do c:

Когда вы инициализируете Cloud Firestore, вы можете включить или отключить сохранение в автономном режиме:

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

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


Для случая, когда нет связи между вашим браузером и "бэкендом" / службой Firestore, пожалуйста, смотрите следующее: Переполнение стека Q / A: Как обнаружить сбой соединения Firestore

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