Как гарантировать, что последняя запись не будет перезаписана предыдущей записью - PullRequest
0 голосов
/ 11 июня 2018

У меня проблема с записью Firebase, происходящей не по порядку.

У меня есть функция, которая записывает данные в документ.Объект мутирует состояние, затем вызывает функцию для записи состояния в Firebase.

function saveStateToFirebase(currentState: any): void{ 
    admin.firestore().doc(`id`).set(currentState);
}

//... application calls these functions with calculated objects called state

saveStateToFirebase(state0);
saveStateToFirebase(state1);

Данные документа должны быть установлены на state1 , однако иногда существует вероятность (из-за условий сетевой гонки, я полагаю), что данные документа установлены на state0 .

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

1 Ответ

0 голосов
/ 12 июня 2018

Я бы предпочел сделать комментарий, но не могу.Но можете ли вы иметь 2 наблюдаемые, одну для потока данных, а другую - состояние блокировки для db?

Тогда, если функция perfectLatest в функции записи будет обращаться к обоим ресурсам перед выполнением операции db.

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