Firebase实时数据库添加到MutableData中的列表

时间:2016-09-15 11:32:28

标签: android firebase firebase-realtime-database

如何使用MutableData添加到Firebase实时数据库事务中的列表?

在正常的非交易类型更新中,我可以简单地使用

DatabaseReference refDatabase = ...    
refDatabase.push().setValue(value);

但是使用MutableData时,不存在这样的push()方法。如何添加到列表并获取唯一键?

我正在寻找像

这样的东西
    public Transaction.Result doTransaction(MutableData mutableData) {
      mutableData.push().setValue(value);
       ...

但这不存在。

1 个答案:

答案 0 :(得分:1)

我想我理解你的问题和评论的意思:很高兴知道push()的缺席是否是API设计师的疏忽,或者故意省略它以防止用户做某事不安全或其他“不好”。

有一种解决方法,对吗?您知道运行事务的引用。可变数据是该参考位置的值。你不能只是将引用变量作为包字段或final类变量,并在回调中使用它来调用push()吗?这很难看,但我觉得应该有用。

我还会猜测push()MutableData而被忽略是有原因的。 documentation for doTransaction()州:

  

此方法将使用当前调用,可能多次   此位置的数据。它负责检查数据和   返回Transaction.Result,指定所需的新数据   在该位置或交易应该中止。

     

由于可以针对同一事务重复调用此方法,   要非常小心可能由此触发的任何副作用   方法

也许生成密钥并向列表添加元素不是您想要做的事情,因为它可能会多次出现。