FirebaseDatabase根目录在Transaction中为null

时间:2017-03-22 03:45:33

标签: android firebase firebase-realtime-database

我正在尝试执行Firebase事务,以便更改Firebase数据库中两个位置的值,但事务处理的MutableData为空。

是否禁止在数据库根目录上运行事务?我是否必须运行多个链式事务才能实现此目的?

val ref = FirebaseDatabase
    .getInstance()
    .getReference("/")

ref.runTransaction(object : Transaction.Handler {

  override fun doTransaction(currentData: MutableData): Transaction.Result {

    println( currentData) // { key = <none>, value = null }

    if (currentData.value == null){
        return Transaction.success(currentData)
    }

    currentData.child("users/{userID}/someVal/").setValue(X)
    currentData.child("items/{itemID}/someVal/").setValue(Y)
    return Transaction.success(currentData)
  }
})

1 个答案:

答案 0 :(得分:1)

你问:是否禁止在数据库根目录上运行事务?我没有在任何地方找到它,但答案似乎是肯定的。

当我运行与您的代码相同的代码(Java而不是Kotlin)时添加了调试日志语句,重复调用doTransaction()方法,并且onComplete()报告错误事务处理太多重试

当我将交易地点更改为root的某个子项时,交易成功完成。