Counter counter not updating node in firebase

I am trying to implement the follow function in my application. Essentially, when the user clicks the follow button, we run runTransactionBlock to update the integer values ​​that we store in the Firebase database for the user and the account that they follow. The problem is that I can update the counter for the user (say John in the example below), but I cannot update the counter for the user I visit (say, olivia in the example below).

Currently, Firebase nodes look like these:

 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 

I refer to the following, however, I'm still having problems getting this to work. If someone could overlook and point me in the right direction, that would be greatly appreciated.

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

Firebase Database Help - Swift

Upvote / Downvote system in Swift through 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
ios swift firebase firebase-database
source share
1 answer

Try: -

 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 } }) 
+3
source share

All Articles