首页 文章

追随者计数器不更新firebase中的节点

提问于
浏览
2

我一直在尝试在我的应用程序上实现"follow"功能 . 基本上当用户点击"follow"按钮时,我们运行 runTransactionBlock 来更新我们存储在Firebase数据库中的用户及其所关注帐户的整数值 . The issue is that I am able to update the counter for the user (say John in example below) , but I am not able to update the counter for the user I am following (say olivia in example below).

目前,Firebase节点看起来如下:

user_profiles{
      UID1:{
           name: john
           following: 1 //code will update for my account
           followers: 0
      },
      UID2:{
           name: olivia
           following: 0
           followers: 0 //code will not update count for person i am trying to follow

我引用了以下内容,但是我仍然面临着让它工作的问题 . 如果有人可以请一瞥并指出我正确的方向,我将不胜感激 .

https://www.firebase.com/docs/ios/guide/saving-data.html

Firebase database help - Swift

Upvote/Downvote system within Swift via Firebase

var guestUIDToPass = String()
var loggedInUser = AnyObject()

@IBAction func didTapFollow(sender: AnyObject) {
 following() 
}



func following() {

        self.loggedInUser = FIRAuth.auth()?.currentUser


//updating count for user, works perfectly        

self.databaseRef.child("user_profiles").child(self.loggedInUser.uid).child("following").runTransactionBlock({
            (currentData:FIRMutableData!) in
            var value = currentData.value as? Int
            if (value == nil) {
                value = 0
            }
            currentData.value = value! + 1
            return FIRTransactionResult.successWithValue(currentData)
        })

//updating count for person user is following, doesn't update firebase

        self.databaseRef.child("user_profiles").child("\(self.guestUIDToPass)").child("followers").runTransactionBlock({
            (currentData:FIRMutableData!) in
            var value = currentData.value as? Int
            if (value == nil) {
                value = 0
            }
            currentData.value = value! + 1
            return FIRTransactionResult.successWithValue(currentData)

        })
    }

1 回答

  • 3

    尝试:-

    let prntRef = FIRDatabase.database().reference().child("user_profiles").child(whomIFollowedUID).child("following")
    
    prntRef.runTransactionBlock({ (following) -> FIRTransactionResult in
        if let followNum = following.value as? Int{
    
            following.value = followNum + 1
            return FIRTransactionResult.successWithValue(following)
        }else{
    
            return FIRTransactionResult.successWithValue(following)
    
        }
        }, andCompletionBlock: {(error,completion,snap) in
    
                print(error?.localizedDescription)
                print(completion)
                print(snap)
            if !completion {
    
                print("The value wasn't able to Update")
                }else{
                //Updated
            }
    })
    

相关问题