如何保证最新的写入不会被先前的写入

时间:2018-06-11 17:27:55

标签: node.js typescript firebase google-cloud-firestore

我遇到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 :(得分:0)

我宁愿发表评论但不能。但是你有2个observable,一个用于数据流,另一个是db的锁定状态吗?

然后,写入函数中的combineLatest将在进行数据库操作之前查询这两个资源。