我正在尝试使用Firebase数据库的runTransaction()但它不起作用。这是我正在使用的代码。numQuestionRef.runTransaction(newTransaction.Handler(){@OverridepublicTransaction.ResultdoTransaction(MutableDatamutableData){StringnumQuestions=(String)mutableData.getValue();longvalue=Long.parseLong(numQuestions,16);value++;StringincHex=Long
我正在构建一个Android应用程序,多个用户可以在其中访问、修改和删除同一项目,并且我正在使用Firebase同步所有设备。为了跟踪更新,该项目有一个时间戳。我编写了一个事务,这样当我尝试删除项目时,它会检查我的副本的时间戳是否早于远程副本:在这种情况下,事务中止并且项目不会被删除。这是我的问题:我的设备离线我成功删除了该项目另一个用户修改了远程数据库上的项目我的设备上线并传播他的删除我认为它会远程中止,因为远程时间戳较新。如果我只能中止基于我的本地数据的决定,我真的看不出中止函数的意义...我应该如何处理Firebase中的此类冲突?--更新这是我用来删除项目的代码。如果在本地删除
编辑:23/10/2016:这没有解决,我仍在寻找答案。我将重写这个问题以使其更清楚,因为我现在知道是什么导致了这个问题。编辑:2016年10月26日:发现了一些东西:在尝试查找问题时,我遇到了一个错误,它帮助我找到了一些东西。事实证明,如果我的Firebase数据库中有这个:Campaigns{UNQ_KEY:1//Thisisbeingsetinthetransaction}而不是这个:Campaigns{UNQ_KEY:{count:1//thisisbeingsetinthetransaction}}问题没有发生。所以,总而言之,这可能是一个递归错误。我有这个Firebase交
编辑:23/10/2016:这没有解决,我仍在寻找答案。我将重写这个问题以使其更清楚,因为我现在知道是什么导致了这个问题。编辑:2016年10月26日:发现了一些东西:在尝试查找问题时,我遇到了一个错误,它帮助我找到了一些东西。事实证明,如果我的Firebase数据库中有这个:Campaigns{UNQ_KEY:1//Thisisbeingsetinthetransaction}而不是这个:Campaigns{UNQ_KEY:{count:1//thisisbeingsetinthetransaction}}问题没有发生。所以,总而言之,这可能是一个递归错误。我有这个Firebase交