2017-02-19 3 views
1

다음 구조를 가지고 있으며 등록 된 정보가 포함 된 모든 노드를 제거하고 싶습니다.Swift Firebase : 상위 키없이 하위 노드 쿼리

{ 
    "events" : { 
    "hsoigjpoirt94pwjfjoijfdg" : { 
     "coverImageURL" : "http://www.who.int/about/Logo-WHO.jpg", 
     "dateTime" : "22 May, 2pm", 
     "eventDescription" : "Lorem ipsum ...", 
     "eventID" : "hsoigjpoirt94pwjfjoijfdg", 
     "lat" : 1.2945, 
     "lon" : 103.8822, 
     "registered" : { 
     "NJqoJ4iMTyXGGqfKADoKDLhDYQj1" : true 
     }, 
     "title" : "Volunteer at WHO" 
    }, 
    "hvasdhpoifah98whfaksad" : { 
     "coverImageURL" : "http://s3.amazonaws.com/patientslikeme/organizations/11/NKF_D_NEWE_RGB-original.png?1317242994", 
     "dateTime" : "24 July, 2:30pm", 
     "eventDescription" : "Lorem ipsum ...", 
     "eventID" : "hvasdhpoifah98whfaksad", 
     "lat" : 1.432079, 
     "lon" : 103.836871, 
     "registered" : { 
     "NJqoJ4iMTyXGGqfKADoKDLhDYQj1" : true 
     }, 
     "title" : "Help at Yishun Dialysis" 
    }, 
    "jioasdifueivaf5262d" : { 
     "coverImageURL" : "http://www.publichygienecouncil.sg/images/default-source/Photo-Galleries/walk-for-your-kidneys-by-nkf/nkf-litter-picking_25-jan-2014.jpg?sfvrsn=6", 
     "dateTime" : "12 Feb, 3-6pm", 
     "eventDescription" : "Lorem ipsum ...", 
     "eventID" : "jioasdifueivaf5262d", 
     "lat" : 1.33831, 
     "lon" : 103.705326, 
     "title" : "Charity Concert at NKF" 
    } 
    }, 
} 

나는 키 "NJqoJ4iMTyXGGqfKADoKDLhDYQj1" : true에 "등록"으로 구성되어 모든 스냅 샷을 추출 싶어요. 지금까지 나는 다음과 시도하지만 모든 것을 꺼내서 :

ref.child("events").queryOrdered(byChild: "registered").observe(.value, with: { (snapshot) in 

      let snapValues = snapshot.value as! [String: AnyObject] 

      print(snapValues)     

     }) { (error) in 
      print(error.localizedDescription) 
     } 

참고로,이 노드의 각 개인이 이벤트에 등록 할 수있는 이벤트가 있습니다. 특정 사용자가 등록한 모든 이벤트를 나열하는 뷰를 생성하고 싶습니다.

답변

1

바로 내가 포기하려 할 때, 나는 원하는 스냅을 얻기위한 해결책을 찾을 수있었습니다.

ref.child("events").queryOrdered(byChild: "registered").observe(.value, with: { (snapshot) in 

      for snap in snapshot.children { 
       let snapDataSnapshot = snap as! FIRDataSnapshot 
       let snapValues = snapDataSnapshot.value as? [String: AnyObject] 

       if let snapWithReg = snapValues?["registered"] as? [String: Bool] { 

        if snapWithReg[userUID]! { 
         print(snap) 
        } 
       } 
      } 


     }) { (error) in 
      print(error.localizedDescription) 

     } 

스냅는 '등록'노드와 userUID 당신이 해결책을 발견 듣고 좋은 "NJqoJ4iMTyXGGqfKADoKDLhDYQj1" : true

+0

모든 스냅입니다 : 내가 그 일에 대해 가지 방법은 다음과. 나는 뭔가를 간과하고 있을지도 모르지만,이 코드는'NJqoJ4iMTyXGGqfKADoKDLhDYQj1'에 대해 필터를합니까? –

+1

@FrankvanPuffelen 내가 더 명확하지 않았을지도 모른다는 사과, "NJqoJ4iMTyXGGqfKADoKDLhDYQj1"은 실제로 userUID입니다. 따라서 snapWithReg는 실제로 "Optional ("NJqoJ4iMTyXGGqfKADoKDLhDYQj1 ": true)"를 인쇄합니다. – Koh

관련 문제