我正在尝试执行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)
}
})
答案 0 :(得分:1)
你问:是否禁止在数据库根目录上运行事务?我没有在任何地方找到它,但答案似乎是肯定的。
当我运行与您的代码相同的代码(Java而不是Kotlin)时添加了调试日志语句,重复调用doTransaction()
方法,并且onComplete()
报告错误事务处理太多重试
当我将交易地点更改为root
的某个子项时,交易成功完成。