Насколько я понимаю, 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 никогда не срабатывает, я предполагаю, что это потому, что буфер офлайн-записи возможность включена по умолчанию.