2016-04-15 24 views
6

में सौ बच्चों पर जोड़े गए आइटमों को सुनें मेरे पास आईओएस मार्केटप्लेस ऐप है, जहां मैं उस बाजार पर बिक्री के लिए प्रत्येक आइटम पर बदलावों को सुन रहा हूं। अधिक सटीक, मैं सुन रहा हूं कि उस आइटम के बच्चे बदल जाते हैं या हटा दिए जाते हैं।फायरबेस

समस्या यह है कि मैं बच्चों के साथ जोड़े जाने पर भी सुनना चाहता हूं। जब फायरबेस पर एक बच्चा जोड़ा जाता है तो सुनने के बारे में अनोखी बात यह है कि जब आप पहली बार श्रोता सेट अप करते हैं तो आप उस नोड पर सभी भाई बहन प्राप्त करते हैं।

किसी आइटम पर बच्चे एक ही आइटम की सूचियां नहीं हैं, इसलिए मैं एक निश्चित टाइमस्टैम्प के बाद जोड़े गए बच्चों को नहीं सुन सकता। मैं something like this करने और उन शुरुआती बच्चों को अनदेखा करने के बारे में सोच रहा था। यह सिर्फ इतना बड़ा कचरा लगता है, क्योंकि मैं अनिवार्य रूप से फायरबेस से दो बार चीजें ला रहा हूं। एक बार FEventTypeValue और FEventTypeChildAdded के साथ।

जिन वस्तुओं को मैं सुनना चाहता हूं वह वे हैं जो फ़ीड में लोड हो रही हैं। यह संभवतः कुछ सौ वस्तुओं की संभावना होगी, लेकिन संभावित रूप से हजारों आइटम हो सकते हैं।

आप इस बारे में कैसे जाएंगे? क्या मुझे बस जोड़े गए बच्चों को सुनने के बारे में सब भूल जाना चाहिए या इसके लिए कोई सभ्य समाधान है?

संपादित करें (जोड़ा उदाहरण कोड):

तो यह है कि कैसे मैं Firebase पर किसी विशिष्ट आइटम के लिए डेटा लाने है।

var ref = new Firebase('https://<your-Firebase>.firebaseio.com'); 
ref.child('listings/-KB9ZqLZBEskoUihb-yR').once('value', function(snapshot) { 
    listing = snapshot.val(); 
}); 

और यहाँ मैं जब एक नया बच्चा है कि आइटम में जोड़ा जाता है के लिए सुनना चाहते हैं:

ref.child('listings/-KB9ZqLZBEskoUihb-yR').on('child_added', function(snapshot) { 
    listing[snapshot.key()] = snapshot.val() 
}); 

जारी करना है कि आइटम को सुन उस नोड पर जोड़ा है को हासिल करेगा सभी बच्चे फिर से नोड और कहा कि लगता है एक विशाल अपशिष्ट की तरह। आप इस स्थिति से कैसे निपटेंगे?

+1

यहां कोड और डेटा का वर्णन करने वाला बहुत अधिक टेक्स्ट है। कृपया वास्तविक कोड और JSON (पाठ के रूप में, कोई स्क्रीनशॉट) प्रदान करें जो उस स्थिति को पुन: उत्पन्न करता है जिसके बारे में आप पूछ रहे हैं। [एमसीवीई] देखें (http://stackoverflow.com/help/mcve)। –

+0

'लिस्टिंग/-KB9ZqLZBEskoUihb-yR' एक विशिष्ट आइटम है? क्या * उस नोड के भीतर * जोड़े जा रहे हैं या आप * लिस्टिंग * नोड के साथ अन्य वस्तुओं को जोड़ने के लिए देख रहे हैं। कुछ फायरबेस संरचना वास्तव में हमें और शायद प्रश्न के कुछ स्पष्टीकरण में मदद करेगी। – Jay

+0

'लिस्टिंग/-KB9ZqLZBEskoUihb-yR' एक विशिष्ट वस्तु है और मैं सुनना चाहता हूं कि जब बच्चे उस विशेष आइटम में जोड़े जाते हैं। –

उत्तर

3

फायरबेस को नए जोड़े गए बच्चों को निश्चित रूप से एक विशिष्ट नोड में पुनर्प्राप्त करने का समर्थन है।

यहां firebase documentation for retrieving data है और आप फिर से 'बाल जोड़ा गया' अनुभाग देख सकते हैं। मैं बस वहां से कुछ महत्वपूर्ण नोट्स उद्धृत कर रहा हूं।

child_added एक बार प्रत्येक बच्चे के लिए मौजूदा और उद्देश्यों के आदेश देने के लिए एक नए बच्चे निर्दिष्ट पथ

में जोड़ा जाता है हर बार और यह

शुरू हो रहा है तो फिर , यह भी है पिछले बच्चे की कुंजी युक्त एक दूसरा तर्क पारित किया।

आप इसके साथ उदाहरण को भी देख सकते हैं।

// If we wanted to retrieve only the data on each new post added to our blogging app, we could use child_added 

// Get a reference to our posts 
var ref = new Firebase("https://docs-examples.firebaseio.com/web/saving-data/fireblog/posts"); 
// Retrieve new posts as they are added to our database 
ref.on("child_added", function(snapshot, prevChildKey) { 
    var newPost = snapshot.val(); 
    console.log("Author: " + newPost.author); 
    console.log("Title: " + newPost.title); 
    console.log("Previous Post ID: " + prevChildKey); 
}); 

prevChildKey

पर एक करीबी नजर है तो, यहाँ आप अपने डेटाबेस संरचना एक सा जो suggested here है बदलकर इस चाल हो सकती। लेकिन, मुझे लगता है कि आपके पास पहले से ही ऑर्डरिंग संरचना है। आशा करता हूँ की ये काम करेगा।