2016-09-22 10 views
7

असल में, मेरे पास एक संरचना है, जिसमें Title, Description और Published ध्वज शामिल है (स्पष्टीकरण के लिए नीचे स्क्रीनशॉट देखें)।स्विफ्ट में फायरबेस डेटा कैसे फ़िल्टर करें?

Topics object in Firebase Database

आवेदन में, मैं डेटा को फ़िल्टर करने और केवल विषय है कि है published = true दिखाने चाहते हैं।

self.ref = FIRDatabase.database().referenceFromURL(FIREBASE_URL).child("topics") 
     self.ref?.queryEqualToValue("published") 
     self.ref?.observeEventType(.Value, withBlock: { (snapshot) in 
      //...Handle Snapshot here 
     }) 

लेकिन यह काम नहीं कर रहा:

यह मैं क्या करने की कोशिश कर रहा हूँ है। मुझे इस बात से कैसे संपर्क करना चाहिए? मदद के लिए अग्रिम धन्यवाद।

उत्तर

16

आपके पास कुछ छोटी गलतियां हैं। कुल मिलाकर कुछ नहीं बहुत बुरा है, लेकिन संयुक्त वे काम नहीं करेंगे:

  1. query... तरीकों में से किसी भी बुला एक नई वस्तु
  2. आप orderByChild() करने की जरूरत है देता है इससे पहले कि आप अपने मूल्य पर फ़िल्टर कर सकते हैं
  3. आप पाश की जरूरत है परिणामों पर

इन का मेल:

let ref = FIRDatabase.database().referenceFromURL(FIREBASE_URL).child("topics") 
let query = ref.queryOrderedByChild("published").queryEqualToValue(true) 
query.observeEventType(.Value, withBlock: { (snapshot) in 
    for childSnapshot in snapshot.children { 
     print(childSnapshot) 
    } 
}) 

हमें यह प्रश्न नियमित रूप से मिलता है। उदाहरण के लिए, कल से यह बहुत समान दिखता है: Firebase Query not Executing Properly। चूंकि मेरी व्याख्या प्रत्येक उत्तर के साथ बदलती है, इसलिए मैं अपने relevant answers को तब तक पढ़ने के लिए थोड़ा सा ब्राउज़ करने की सलाह देता हूं जब तक यह क्लिक न हो जाए।

+0

वह था! मदद फ्रैंक के लिए फिर से धन्यवाद! –

+0

क्या यह अभी भी संभव है यदि डेटा को एक और स्तर गहरा घोंसला दिया गया हो। उदाहरण के लिए, यदि "प्रकाशित" के तहत सत्य/झूठे मूल्यों वाली कुंजियों की एक सूची थी। और आप '/ प्रकाशित/key1 = true' द्वारा फ़िल्टर करना चाहते थे यह समस्या है जिसमें मैं चल रहा हूं। –

+0

मैंने कोशिश की लेकिन मुझे सभी बाल मूल्य प्राप्त हुए, केवल प्रश्न मानदंडों को पार करने वाले ही नहीं। मैं .childAdded और क्वेरी स्टार्टिंग का उपयोग कर रहा हूँ (पर :)। किसी भी पॉइंटर्स के लिए अग्रिम धन्यवाद। – Septronic

0
self.ref = FIRDatabase.database().referenceFromURL(FIREBASE_URL).child("topics"). 
    queryOrderedByChild("published").queryEqualToValue(true) 
    .observeEventType(.Value, withBlock: { (snapshot) in 
    for childSnapshot in snapshot.children { 
     print(snapshot) 
    } 
}) 
संबंधित मुद्दे