node.js - 如何保证最新的写入不会被之前的写入覆盖

标签 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 交易的文档,但不确定它是否适用于此处。因为我没有根据前一个字段同时更新数据库中的字段。我只关心我的软件的最新状态。

最佳答案

我宁愿发表评论,但不能。但是你可以有 2 个可观察量,一个用于数据流,另一个是数据库的锁定状态吗?

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

关于node.js - 如何保证最新的写入不会被之前的写入覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50803158/

相关文章:

angular - Angular 4 中的 ngx-slick 轮播不移动项目

javascript - TypeScript 中像 methodName<string>() 这样的尖括号有什么用?

angularjs - 将 Firebase user.uid 设置为全局变量

Node.js 全局代理设置

sql-server - 如何将图像发送到Web服务 Node js,然后使用此图像参数执行存储过程

node.js - 使用 Nodejs 和 Supertest 进行子域集成测试

javascript - 从 Firebase 数据库中删除用户

javascript - 一段时间后, Node Redis 抛出读取 ETIMEDOUT 错误

node.js - Three.js 与 typescript 自动完成

swift - 使用 UITableViewController 从 Firebase 获取当前子 ID