Firebase交易 - 这是正确的吗?

时间:2016-12-27 00:58:51

标签: ios swift firebase swift3 firebase-realtime-database

所以我一直在四处看看,有很多人在进行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()
        })

1 个答案:

答案 0 :(得分:3)

只要你对逻辑感到满意,这对我来说就是好事。

您当前的逻辑只是一个更新 - 如果没有现有帖子,您将中止该事务(currentData.value将为空)。

您从likeCount中删除1,而不是像您在说明中提到的那样添加。

您确实可以使用的版本,但您可能希望实现runTransaction:andCompletionBlock,以便记录错误,尤其是在调试/测试时。