2017-10-04 59 views
1

Firebase Hierachy訪問的火力地堡(SWIFT)的具體關鍵

Simulater Screen

我試圖火力點內更新子值。 用戶首先會創建一個新的訂單,它會創建兩個節點,一個在主要訂單部分,另一個在用戶下面,以保持清潔記錄。這似乎工作,但我努力更新值

然後,當他在窗體上,並進行更新,我希望firebase在firebase上同時更新。我如何訪問該特定的密鑰,因爲當我嘗試使用觀察方法時,似乎沒有任何工作適用於我。

什麼是最好的方式來訪問表單所在的關鍵並更新值?

回答

1

這是如何在火力地堡更新值:

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 
+0

嗨,夥伴,感謝您的回覆,讓我今天實施這個並回來給你。你可以讓我知道如何訪問「孩子(」specificKeyYouWantToEdit「)」部分,因爲這是我正在努力挑選關鍵時,我在VC接受訂單。再次感謝您的洞察力。 –

+0

當你上傳這個let key = ref.child(「COrders」)。childByAutoId()。key時,你可以得到密鑰,問題在於你的數據是如何存儲的。如果您有用戶,您希望能夠直接獲得所有訂單或至少部分訂單。在用戶的uid下使用autoid存儲訂單,然後獲取部分或全部這些密鑰。當你循環一個快照時,你可以得到這樣的關鍵:對於snap.children中的孩子{child} = child作爲? DataSnapshot if let key = child?.key { // do something } } – DoesData

+0

Thanks mate!這將幫助堆......非常感謝你 –

0

萬一你還在尋找答案。

問題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獲得的關鍵字。並使用此密鑰進行更新。