我尝试了一些简单的计算功能,我可以在Firebase中增加用户的声誉,String
。所以我做到了,但问题是不是添加1,而是添加2,我在代码中看不到逻辑错误。
func reputationCalculation(){
self.databaseRef.child("users").child(currentUser.generalDetails.uid).child("reputation").runTransactionBlock({
(currentData:FIRMutableData!) in
var count: Int = Int(self.currentUser.generalDetails.reputation)!// At this point it is 0 in my case
count += 1// add one to previous value
print(count)//print the value
self.currentUser.generalDetails.reputation = String(count)//Set the value in Singleton
self.reputationLabel.text = self.currentUser.generalDetails.reputation//Show on label
currentData.value = String(count)
return FIRTransactionResult.success(withValue: currentData)
})
}
例如,如果在Firebase节点中的信誉为“0”时调用func
。它打印出1
和2
,并将最后一个值设置为Firebase。有什么问题?
答案 0 :(得分:0)
您应该检查方法runTransactionBlock是否未被调用两次,它是否发生在firebase
中