2017-10-04 2 views
1

Firebase Hierachy중포 기지 (스위프트)에 특정 키 내가 중포 기지 내 자식 값을 업데이트하려고

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

HI 메이트, 답장을 보내 주셔서 감사합니다. 오늘 바로 구현하여 다시 보겠습니다. ("specificKeyYouWantToEdit") "부분에 액세스하는 방법을 알려주십시오. 그 이유는 주문을받는 VC에있을 때 키를 선택하기 위해 애쓰는 것이기 때문입니다. 귀하의 통찰력에 다시 한번 감사드립니다. –

+0

업로드 할 때 키를 가져올 수 있습니다. key = ref.child ("COrders"). childByAutoId(). key. 문제는 데이터가 저장되는 방식입니다. 사용자가있는 경우 모든 주문 또는 적어도 일부는 직접받을 수 있기를 원합니다. 주문을 사용자의 uid 아래에있는 autoid를 사용하여 저장 한 다음 해당 키의 일부 또는 전부를 가져옵니다. 스냅 샷을 반복 할 때 다음과 같은 키를 얻을 수 있습니다 : snap.children의 자식 { child = child를? DataSnapshot key = child 일 경우 .key { // do something } } – DoesData

+0

감사합니다. 그 힙을 도움이 될 것입니다 ... 고맙습니다. –

0

만약 당신이 아직도 대답을 찾고 있다면.

Prob # 1에 대한 답변. 사용자의 주문 값을 업데이트해야합니다. 성공한 경우 여기에서 부모 키 (귀하의 경우 AutoID)를 가져 와서이 키를 사용하여 "Corders"로 업데이트하십시오. 당신은 "양식에 있는지 그 키에 액세스"작성된 여기, PROB # 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에서 가져온 키를 저장하십시오. 이 키를 사용하여 업데이트하십시오.