首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解决冲突?

解决冲突?
EN

Stack Overflow用户
提问于 2013-02-04 23:18:41
回答 1查看 2.5K关注 0票数 9

如果两个或更多用户都处于脱机状态,并且正在编辑相同的数据,那么谁赢了?或者,更好的是,是否存在冲突/合并解决方案?

EN

回答 1

Stack Overflow用户

发布于 2013-02-04 23:48:02

答案取决于他们是如何修改数据的。

  • 设置()(并移除、推送、setWithPriority等)是最后一次写作胜利。因此,如果客户端A和客户端B都是“脱机”的,然后连接到Firebase,如果客户端A首先成功地连接到Firebase,那么他的set()将被写入Firebase,但是当客户端B最终连接时,他的集合将覆盖客户端A的集合,因此客户端B最终将获胜。
  • 事务()已经内置了冲突解决方案。因此,如果客户端A首先连接到Firebase,他的事务将在第一次尝试时成功(因为没有冲突)。然后,当客户端B连接时,他的事务将在第一次尝试时失败,因此他的事务更新函数将自动第二次运行(现在是针对客户端A先前编写的新数据),并且这个新数据将被写入Firebase (假设没有进一步的冲突)。

因此,如果您不关心谁赢了,请使用set()。如果需要通过冲突/合并解决来确保某种类型的一致性,请使用transaction()。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14697553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档