How to update particular value of child in Firebase DB

15,335

Solution 1

For Updating values at a particular node in Firebase Realtime Database, use:-

  • You can either use runTransactionBlock:

      func updateTotalNoOfPost(completionBlock : (() -> Void)){
    
    
    let prntRef = FIRDatabase.database().reference().child("komal_kyz").child(your_AuroID).child("dealResul")
    
    prntRef.runTransactionBlock({ (resul) -> FIRTransactionResult in
        if let dealResul_Initial = resul.value as? Int{
    
            //resul.value = dealResul_Initial + 1
            //Or HowSoEver you want to update your dealResul. 
             return FIRTransactionResult.successWithValue(resul)
        }else{
    
            return FIRTransactionResult.successWithValue(resul)
    
        }
        }, andCompletionBlock: {(error,completion,snap) in
    
                print(error?.localizedDescription)
                print(completion)
                print(snap)
            if !completion {
    
               print("Couldn't Update the node")
            }else{
    
                completionBlock()
            }
        })
    
     }
    

    While calling this function:-

    updateTotalNoOfPost{
           print("Updated")
          }
    
  • Or just call updateValues

        let prntRef  = FIRDatabase.database().reference().child("komal_kyz").child(your_AuroID)
        prntRef.updateChildValues(["dealResul":dealResult]) 
    

PS:- Prefer using runTransactionBlock: instead of .updateChildValues if you only want to increment a particular node. Also read this: -https://stackoverflow.com/a/39458044/6297658

Solution 2

I suggest using setValue for single child updates (keep in mind that I am using Swift 3, slight syntax changes may apply but you should be fine):

rootRef.child("komal_kyz").child(key).setValue(["dealResul":dealResult])

Solution 3

let ref = FIRDatabase.database().reference().root.child("users").child("childKey").updateChildValues(["childKeyForUpdate": "NewData"])
Share:
15,335
Komal Kamble
Author by

Komal Kamble

I am currently learning Swift

Updated on June 05, 2022

Comments

  • Komal Kamble
    Komal Kamble almost 2 years

    I am following this document. Following is my code for update:

    func updateDealResultToServer(key:String,dealResult : String)
    {
    
        let post = ["dealResul": dealResult]
        let childUpdates =
            ["/komal_xyz/\(key)": post
            ]
    
        rootRef.updateChildValues(childUpdates)
    
    }
    

    This Is my Firebase database structure: enter image description here

    I want to only change the value for dealResult. Whenever I try to run above code for particular child node like 1473670100726, other value except dealResul is deleted.

  • mrun
    mrun over 6 years
    Would you please elaborate on that?
  • aircraft
    aircraft over 6 years
    Can you provide some details?
  • Josh
    Josh about 6 years
    Is there a reason why using setValue is better?
  • Er. Deependra Thakur
    Er. Deependra Thakur about 6 years
    firebase is a database which is used for implement chatting functionality in your application , firebase provide socket programming. if you want to update value of any selected chilled then this code help-full for you in which "user" is a your table name on firebaseDataBase and "childKey" is a chilled of user table and "childKeyForUpdate" is your selected key for update and the "NewData" id your latest data for replace to old