I have been trying to implement a "follow" function on my app. Essentially when a user hits the "follow" button, we run a runTransactionBlock
to update integer values we are storing on Firebase database for the user and the account they are following. 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).
Currently the Firebase nodes look as such:
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 have referenced the following, however I am still facing issues with getting this to work. If anyone can please glance through and point me in the right direction, it would be greatly appreciated.
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)
})
}