2017-09-18 4 views
1

안녕하세요 특정 노드 아래중포 기지 쿼리 반환 널이

아래 카테고리 필드로 내 중포 기지 데이터베이스에서 데이터를 쿼리 시도하고 내 데이터베이스의 조각이 난 그냥 이해하기 좀 더 쉽게 말을하는 것입니다

"events" : { 
    "CCDS" : { 
     "attend:count" : 2, 
     "event:category" : "Seize The Day", 
     "event:city" : "San Francisco", 
     "event:date" : { 
     "end:date" : "08/09/2017", 
     "end:time" : "7:00 PM", 
     "start:date" : "08/09/2017", 
     "start:time" : "5:00 PM" 
     }, 
     "event:description" : "Happy hour is more joyful in the summer thanks to Center City District Sips, which offers discounted drinks and appetizers every Wednesday evening. Catch up with old friends and make a few new ones as Center City’s best bars and restaurants host the summer’s happiest hour every Wednesday from 5-7 p.m. Enjoy $5 cocktails, $4 wine, $3 beers and half-price appetizers at dozens and dozens of bars and restaurants.", 
     "event:imageURL" : "https://firebasestorage.googleapis.com/v0/b/eventful-3d558.appspot.com/o/event_flyers%2FCCDS-compressor.jpg?alt=media&token=bcce3968-1cca-4890-a3d0-d8064bd0d1da", 
     "event:name" : "center city district sips", 
     "event:promo" : "https://firebasestorage.googleapis.com/v0/b/eventful-3d558.appspot.com/o/event_promo_vid%2FMIA%2FBudweiser%20Made%20In%20America%20Festival%202013%20August%2031%20-%20September%201.mp4?alt=media&token=9b4b9d4f-2d6d-4762-a5fd-c72edb943ac4", 
     "event:state" : "PA", 
     "event:street:address" : "660 Chestnut St", 
     "event:zip" : 19130 
    }, 
    "DD" : { 
     "attend:count" : 2, 
     "event:category" : "I Love College", 
     "event:city" : "New York", 
     "event:date" : { 
     "end:date" : "08/26/2017", 
     "end:time" : "5:00 PM", 
     "start:date" : "08/26/2017", 
     "start:time" : "1:00 PM" 
     }, 
     "event:description" : "Help us celebrate the hard work and creativity of the students and demo the iOS apps and games they've built in only 8 weeks! Developers, entrepreneurs, friends, and industry professionals are all welcome to attend", 
     "event:imageURL" : "https://firebasestorage.googleapis.com/v0/b/eventful-3d558.appspot.com/o/event_flyers%2Fmakeschooldemo-compressor.jpg?alt=media&token=1e75d18d-1949-48e8-a208-2ca88cde395b", 
     "event:name" : "demo day", 
     "event:promo" : "https://firebasestorage.googleapis.com/v0/b/eventful-3d558.appspot.com/o/event_promo_vid%2FDD%2FDemo%20Night%202017%20-%20Make%20School%20Product%20College.mp4?alt=media&token=d9adb4b1-5689-4b15-96b2-e18138701526", 
     "event:state" : "PA", 
     "event:street:address" : "394 Broadway", 
     "event:zip" : 10013 
    }, 
    "MIA" : { 
     "attend:count" : 23, 
     "event:category" : "Seize The Night", 
     "event:city" : "San Francisco", 
     "event:date" : { 
     "end:date" : "09/03/2017", 
     "end:time" : "7:00 PM", 
     "start:date" : "09/02/2017", 
     "start:time" : "12:00 PM" 
     }, 
     "event:description" : "Budweiser Made in America Festival is an annual music festival held in Philadelphia and formerly simultaneously held in Los Angeles.Sponsored by Anheuser–Busch and produced by Live Nation, the event features several stages that continuously host live music from a wide range of genres including hip hop, rock, pop, R&B, and EDM.", 
     "event:imageURL" : "https://firebasestorage.googleapis.com/v0/b/eventful-3d558.appspot.com/o/event_flyers%2FMadeInAmerica-compressor.jpg?alt=media&token=1ac6e794-6a1f-4f8a-bdb0-afc91f8ba6ae", 
     "event:name" : "made in america", 
     "event:promo" : "https://firebasestorage.googleapis.com/v0/b/eventful-3d558.appspot.com/o/event_promo_vid%2FMIA%2FBudweiser%20Made%20In%20America%20Festival%202013%20August%2031%20-%20September%201.mp4?alt=media&token=11e5059f-3973-4a74-9c9b-a537b737e0ab", 
     "event:state" : "PA", 
     "event:street:address" : "Ben Franklin Parkway", 
     "event:zip" : 19130 
    }, 
    "MIA2" : { 
     "attend:count" : 2, 
     "event:category" : "Dress To Impress", 
     "event:city" : "Philadelphia", 
     "event:date" : { 
     "end:date" : "09/03/2017", 
     "end:time" : "7:00 PM", 
     "start:date" : "09/02/2017", 
     "start:time" : "12:00 PM" 
     }, 
     "event:description" : "Budweiser Made in America Festival is an annual music festival held in Philadelphia and formerly simultaneously held in Los Angeles. Sponsored by Anheuser–Busch and produced by Live Nation, the event features several stages that continuously host live music from a wide range of genres including hip hop, rock, pop, R&B, and EDM. This is different regardless of the same name in database", 
     "event:imageURL" : "https://firebasestorage.googleapis.com/v0/b/eventful-3d558.appspot.com/o/event_flyers%2Fmadeinamerica2.jpg?alt=media&token=bd5eb5e4-4e22-4412-a34b-2dc6c9ae561e", 
     "event:name" : "made in america", 
     "event:promo" : "https://firebasestorage.googleapis.com/v0/b/eventful-3d558.appspot.com/o/event_promo_vid%2FMIA%2FBudweiser%20Made%20In%20America%20Festival%202013%20August%2031%20-%20September%201.mp4?alt=media&token=11e5059f-3973-4a74-9c9b-a537b737e0ab", 
     "event:state" : "PA", 
     "event:street:address" : "Ben Franklin Parkway", 
     "event:zip" : 19130 
    }, 
    "MIA3" : { 
     "attend:count" : 8, 
     "event:category" : "21 & Up", 
     "event:city" : "Philadelphia", 
     "event:date" : { 
     "end:date" : "09/03/2017", 
     "end:time" : "7:00 PM", 
     "start:date" : "09/02/2017", 
     "start:time" : "12:00 PM" 
     }, 
     "event:description" : "Budweiser Made in America Festival is an annual music festival held in Philadelphia and formerly simultaneously held in Los Angeles. Sponsored by Anheuser–Busch and produced by Live Nation, the event features several stages that continuously host live music from a wide range of genres including hip hop, rock, pop, R&B, and EDM.", 
     "event:imageURL" : "https://firebasestorage.googleapis.com/v0/b/eventful-3d558.appspot.com/o/event_flyers%2Fmadeinamerica3-compressor.jpg?alt=media&token=9166e2fb-ac9d-46d5-b06f-60cffc337b15", 
     "event:name" : "made in america", 
     "event:promo" : "https://firebasestorage.googleapis.com/v0/b/eventful-3d558.appspot.com/o/event_promo_vid%2FMIA%2FBudweiser%20Made%20In%20America%20Festival%202013%20August%2031%20-%20September%201.mp4?alt=media&token=11e5059f-3973-4a74-9c9b-a537b737e0ab", 
     "event:state" : "PA", 
     "event:street:address" : "Ben Franklin Parkway", 
     "event:zip" : 19130 
    } 
    } 
나는 또한 나는 또한 내가 키 fr과 당기하고 혼란을

eventsbylocation" : { 
    "37%2e7,-122%2e4" : { 
     "event0" : "MIA", 
     "event1" : "CCDS", 
     "event2" : "MIA2", 
     "event3" : "MIA3", 
     "event4" : "DD" 
    }, 
    "40%2e7,-74%2e0" : { 
     "event" : "DD" 
    } 
    } 

을 취소 한 다음이 포함됩니다 위치에 모든 이벤트를 저장하는 다른 노드가

om eventbylocation 노드를 선택하고 홈 카테고리 또는 하나 이상의 이벤트가 다른 카테고리에있는 경우 모든 이벤트를 반환합니다. 해당 카테고리를 선택하면 "Seize the day"라고 말하면서 CCDS와 관련된 모든 정보를 반환해야합니다 .

내 코드 설정 방법은 eventsByLocation의 각 키에 대해 해당 키를 기반으로하는 이벤트 노드의 범주 필드를 확인하는 것입니다. 그것은 관련 정보를 반환해야합니다 일치하는 경우는 아래

내가 잘못했을 수도 있습니다 무엇에이

import Foundation 
import Firebase 
import FirebaseAuth 


struct EventService { 

    static func show(forEventKey eventKey: String, eventCategory: String? = nil, completion: @escaping (Event?) -> Void) { 
     // print(eventKey) 
     let ref = Database.database().reference().child("events").child(eventKey) 
     // print(eventKey) 

      if eventCategory == "Home" || eventCategory == nil || eventCategory == ""{ 
       //pull everything 
       ref.observeSingleEvent(of: .value, andPreviousSiblingKeyWith: { (snapshot,eventKey) in 
        print(snapshot.value ?? "") 
        guard let event = Event(snapshot: snapshot) else { 
         return completion(nil) 
        } 
        completion(event) 
       }) 

      }else{ 
       //pull based off of category 
       print(eventCategory) 
       print("Begin Query By Event Category") 
       var query = ref.queryOrdered(byChild: "event:category").queryEqual(toValue: eventCategory) 
       query.observeSingleEvent(of: .value, with: { (snapshot) in 
        print(snapshot) 

       }, withCancel: { (err) in 
        print("Failed to fetch event data") 
       }) 
      } 


    } 
} 

어떤 통찰력을 처리하는 나의 방법에 대한 코드입니다, 아무것도 반환하지 않습니다? 이 질문에 대한 답변은 현재까지는 아무 것도 반환하지 않았으므로 잘못된 점을 파악할 수는 없습니다.

답변

0

신경 쓰지 마시오 그 중 아무 것도 이벤트 객체를 가져 왔을 때 이미 범주가 있었는데 반환하기 전에 간단한 문자열 검사 만 했어야했습니다.