在我的iOS应用中,我正在使用Firebase Transactions根据用户生成的数据更新记分板,以避免并发更新时出错。我在三点保存数据:
以下是交易代码:
func saveDataToFirebase(signUserOut: Bool)
{
let countyRef = Database.database().reference().child("countyleaderboard")
countyRef.child(self.userCounty).runTransactionBlock({ (currentData: MutableData) in
var value = currentData.value as? Float
if value == nil
{
value = Float(0.00)
}
currentData.value = value! + self.currentSessionAlt
return TransactionResult.success(withValue: currentData)
}, andCompletionBlock: {
error, commited, snap in
if commited && signUserOut
{
do
{
print("transaction complete")
try Auth.auth().signOut()
}
catch let logoutError
{
print(logoutError)
}
}
})
}
代码到达注销方法,但数据库未更新。我单独运行代码,不包括用户注销,事务处理完成。
为什么在签署用户之前交易实际上没有完成?有没有办法解决这个问题?