FirebaseDatabase根引用在事务中为空
我正在尝试执行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) } })
您问: 是否禁止在数据库根目录上运行事务? 我没有在任何地方发现它,但答案似乎是。
当我用添加了调试日志语句的代码(Java代替Kotlin)运行代码时,会重复调用doTransaction()
方法,并且onComplete()
报告错误事务有太多的重试次数 。
当我将事务位置更改为root
某个子项时,事务成功完成。