所以我一直在四处看看,有很多人在进行Firebase交易,但他们都不同。我想做的只是在计数器上添加1并且iv完美地运行了但是我想检查我是否正确地执行它因为我的方式比他们的文档简单得多。
干杯挺进! :)
database.child("stories").child(articleKey).runTransactionBlock({ (currentData:FIRMutableData) -> FIRTransactionResult in
if var post = currentData.value as? [String: AnyObject] {
var likeCount = post["storyLikes"] as? Int ?? 0
likeCount += 1
post["storyLikes"] = likeCount as AnyObject?
currentData.value = post
return FIRTransactionResult.success(withValue: currentData)
}
//Abort like if there was a problem
return FIRTransactionResult.abort()
})
答案 0 :(得分:3)
您当前的逻辑只是一个更新 - 如果没有现有帖子,您将中止该事务(currentData.value
将为空)。
您从likeCount
中删除1,而不是像您在说明中提到的那样添加。
您确实可以使用的版本,但您可能希望实现runTransaction:andCompletionBlock
,以便记录错误,尤其是在调试/测试时。