首页 > 解决方案 > 如何在firebase实时数据库的单个节点上按顺序从多个设备写入数据?

问题描述

我有一个使用 firebase realtime 的聊天模块,我正在使用 push() 将数据写入节点。我正在尝试按顺序推送数据,但不知何故它不起作用。我有两个设备,两个设备都具有相同的时区,系统会自动拾取。

我尝试通过从设备获取时间戳来推送数据,但毫秒差异很小,所以它不起作用。我还尝试了 firebase 提供的 push() 方法

messageDatabase = firebaseDatabase.getReference(FIREBASE_CHAT).child(firebaseId)
messageDatabase.push().setValue(chatMessageItem)

我希望消息在发送时应该是有序的,就像任何社交消息应用程序一样,无论它是从两个或多个设备发送的。

标签: androidfirebase-realtime-database

解决方案


您应该必须使用firebase 事务在单个节点上进行多项操作。

每当您在数据库上使用事务时,您都会牺牲一些可伸缩性以获得更强大的数据一致性保证。Firebase 数据库上的事务没有什么不同,除了开发人员可能倾向于在更高并发的情况下使用 Firebase。

对于任何事务系统:保持系统可扩展性的关键是尽量减少争用更新相同数据的客户端数量。对于 Firebase,您可以通过在 JSON 树中尽可能低地运行事务来实现这一点。即计数器是可以在事务下正常工作的示例。


推荐阅读