在Firebase数据库中,如何在需要推送和更新操作时保持数据一致性?

时间:2017-10-27 11:58:08

标签: android json firebase firebase-realtime-database

假设我在Firebase中有以下数据库,当用户向其他用户发送新邮件时,需要将新邮件推送到"ChatThreads/hash(User1,User2)"并同时更新"UserChats/User1/User2"和{ {1}}。

"UserChats/User2/User1"

如何保持数据一致性? 在"ChatThreads" : { "hash(User1,User2)" : { "1" : { "message" : "Hello", "sender" : "User2", "time" : 9835592 }, "2" : { "message" : "hi", "sender" : "User1", "time" : 10000000 }, "3" : { "message" : "I am boss", "sender" : "User2", "time" : 14835592 } } } }, "UserChats" : { "User1" : { "User2" : { "lastTime" : 14835592, "latestMessage" : "I am boss" } }, "User2" : { "User1" : { "lastTime" : 14835592, "latestMessage" : "I am boss" } } } 的文档中,介绍了创建对多个更新的公共父级的引用并将所有更新放入映射的方法。但是,在这种情况下,不仅需要更新,还需要推送。

1 个答案:

答案 0 :(得分:0)

当您在没有任何参数的情况下致电push()时,您将获得一个始终在客户端上生成的唯一密钥。 (推送ID总是在本地生成。)使用该键,您可以构建到您要添加数据的位置的路径以及该更新的所有其他数据。