我試圖火力點內更新子值。 用戶首先會創建一個新的訂單,它會創建兩個節點,一個在主要訂單部分,另一個在用戶下面,以保持清潔記錄。這似乎工作,但我努力更新值
然後,當他在窗體上,並進行更新,我希望firebase在firebase上同時更新。我如何訪問該特定的密鑰,因爲當我嘗試使用觀察方法時,似乎沒有任何工作適用於我。
什麼是最好的方式來訪問表單所在的關鍵並更新值?
我試圖火力點內更新子值。 用戶首先會創建一個新的訂單,它會創建兩個節點,一個在主要訂單部分,另一個在用戶下面,以保持清潔記錄。這似乎工作,但我努力更新值
然後,當他在窗體上,並進行更新,我希望firebase在firebase上同時更新。我如何訪問該特定的密鑰,因爲當我嘗試使用觀察方法時,似乎沒有任何工作適用於我。
什麼是最好的方式來訪問表單所在的關鍵並更新值?
這是如何在火力地堡更新值:
func updateDatabaseForEdits() {
let updates : [AnyHashable: Any] = ["variableName": value,
"variableName2": value]
ref.child("COrders").child("specificKeyYouWantToEdit").updateChildValues(updates, withCompletionBlock: { (error, success) in
if error != nil {
// upload failed
return
}
else {
// upload worked
// update your locally stored values
}
})
}
還有其他問題與您應用程式雖然。具體來說,你如何存儲數據。您如何期望知道訪問哪個密鑰?我建議您更新您的數據存儲是這樣的:
desikhanapeena {
COrder {
key123 {
orderInformation
}
}
UserOrders {
uid {
key123
orderInformation
}
}
}
讓我知道,如果你有問題:如果你想從一個快照可以是這樣做的關鍵
:
for child in snap.children {
let child = child as? DataSnapshot
if let key = child?.key {
// print(key)
}
}
如果你願意,你在上傳之前,你可以做,像這樣拿到鑰匙:
let key = ref.child("COrders").childByAutoId().key
萬一你還在尋找答案。
問題1的答案。 你需要更新用戶的訂單價值,如果它成功,那麼從那裏取得父鍵(在你的情況下,它的自動識別碼),並使用這個鍵,在「Corders」中更新。 這裏是習題#2的代碼
func updateBothValue(){
let value = ["key":"data","key1": "data2"]
REF.child("Users").child(UID).child("UserCorder").childByAutoId().setValue(value){
error, ref in
guard error == nil else { return }
let key = ref.key
REF.child("Coorders").child(key).setvalue(value)
}
}
,因爲你寫的「訪問密鑰的形式是」。對於每個表單數據,存儲您在前面步驟中從Firebase獲得的關鍵字。並使用此密鑰進行更新。
嗨,夥伴,感謝您的回覆,讓我今天實施這個並回來給你。你可以讓我知道如何訪問「孩子(」specificKeyYouWantToEdit「)」部分,因爲這是我正在努力挑選關鍵時,我在VC接受訂單。再次感謝您的洞察力。 –
當你上傳這個let key = ref.child(「COrders」)。childByAutoId()。key時,你可以得到密鑰,問題在於你的數據是如何存儲的。如果您有用戶,您希望能夠直接獲得所有訂單或至少部分訂單。在用戶的uid下使用autoid存儲訂單,然後獲取部分或全部這些密鑰。當你循環一個快照時,你可以得到這樣的關鍵:對於snap.children中的孩子{child} = child作爲? DataSnapshot if let key = child?.key { // do something } } – DoesData
Thanks mate!這將幫助堆......非常感謝你 –