如何组合updateChildren和runTransaction?

时间:2017-07-26 20:26:28

标签: android firebase firebase-realtime-database

我想要更新两个引用:

1

/items/item1/sumlikes: 4

“item1”被4位用户赞。我需要一个事务,因为多个用户可以同时写入此值:https://firebase.google.com/docs/database/android/read-and-write#save_data_as_transactions

2

/users/myusername/item1: true

我将“item1”添加到喜欢它的用户名。

我想要1.和2.写原子,所以我需要在这个例子中使用updateChildren和HashMap: https://firebase.google.com/docs/database/android/read-and-write#update_specific_fields

但是我怎样才能将它与交易相结合?谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

无法跨多个不同的位置运行交易。使事务覆盖两个位置的唯一方法是在两个位置上方的公共节点上运行事务。这将严重降低数据库的可伸缩性/并发性。

另见:

我在某些方面调查的一件事是使用安全规则和常规写入(包括像你这样的多位置更新)来实现相同的结果。这绝对是可能的。但它很快变得非常棘手。请参阅Is the way the Firebase database quickstart handles counts secure?

上的答案