我正在关注此document。以下是我的更新代码:
func updateDealResultToServer(key:String,dealResult : String)
{
let post = ["dealResul": dealResult]
let childUpdates =
["/komal_xyz/\(key)": post
]
rootRef.updateChildValues(childUpdates)
}
我只想更改dealResult
的值。每当我尝试为1473670100726
之类的特定子节点运行上述代码时,将删除除dealResul
之外的其他值。
答案 0 :(得分:7)
要更新Firebase实时数据库中特定节点的值,请使用: -
您可以使用 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()
}
})
}
调用此功能时: -
updateTotalNoOfPost{
print("Updated")
}
或只需致电 updateValues
let prntRef = FIRDatabase.database().reference().child("komal_kyz").child(your_AuroID)
prntRef.updateChildValues(["dealResul":dealResult])
PS: - 如果您只想增加特定节点,则首选使用 runTransactionBlock:
而不是 .updateChildValues
。另请阅读: - https://stackoverflow.com/a/39458044/6297658
答案 1 :(得分:5)
我建议使用setValue
进行单个子更新(请记住我使用的是Swift 3,可能会有轻微的语法更改,但您应该没问题):
rootRef.child("komal_kyz").child(key).setValue(["dealResul":dealResult])
答案 2 :(得分:1)
let ref = FIRDatabase.database().reference().root.child("users").child("childKey").updateChildValues(["childKeyForUpdate": "NewData"])