Ios Firebase事务-这是否正确?
所以我四处看看,有很多人在做Firebase交易,他们都不一样。我所要做的就是在计数器上加上1,而iv所得到的效果非常好,但我想检查一下我做得是否正确,因为我的方法比他们的文档简单得多 欢呼就是前进!:)Ios Firebase事务-这是否正确?,ios,swift,firebase,swift3,firebase-realtime-database,Ios,Swift,Firebase,Swift3,Firebase Realtime Database,所以我四处看看,有很多人在做Firebase交易,他们都不一样。我所要做的就是在计数器上加上1,而iv所得到的效果非常好,但我想检查一下我做得是否正确,因为我的方法比他们的文档简单得多 欢呼就是前进!:) 我觉得这很好,只要你对逻辑感到满意 您当前的逻辑只是一个更新-如果没有现有post,您将中止事务(currentData.value将为空) 您可以从likeCount中删除1,而不是像您在说明中提到的那样添加1 您拥有的版本当然可以工作,但您可能希望实现它,它可以让您记录错误,特别是在调试/
我觉得这很好,只要你对逻辑感到满意 您当前的逻辑只是一个更新-如果没有现有post,您将中止事务(
currentData.value
将为空)
您可以从likeCount
中删除1,而不是像您在说明中提到的那样添加1
您拥有的版本当然可以工作,但您可能希望实现它,它可以让您记录错误,特别是在调试/测试时。谢谢!啊,是的,这是我发布的不同逻辑,哎呀!创建项目时,它将默认的like计数器设置为0,这样它就不会中止事务。我确实看到有一个完成块,我可以使用,但我仍然扔了,如果我需要它!但是谢谢你!
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()
})