सोशल मीडिया ऐप के लिए, मेरे पास AngularFire 2
का उपयोग करके उनके आईडी द्वारा संदर्भित फ़ीड ऑब्जेक्ट्स का संग्रह है। एक बार इन आईडी में से प्रत्येक का वास्तविक डेटा डेटाबेस से खींचा जाता है जो वास्तविक फ़ीड ऑब्जेक्ट्स को संग्रहीत करता है, तो मैं इस जानकारी के साथ feedCards
अवलोकन करने योग्य ऑब्जेक्ट को अपडेट करना चाहता हूं ताकि मैं अपने एचटीएमएल में फ़ीड ऑब्जेक्ट्स का संग्रह असीमित रूप से प्रदर्शित कर सकूं। यह घटनाओं की एक बहुत भ्रमित श्रृंखला है, इसलिए मुझे इसे आपके लिए सारांशित करने दें।आयनिक 3 - असीमित डेटा के साथ अवलोकन योग्य
चरण-दर-चरण दृष्टिकोण
displayFeed()
Main
पृष्ठ परfeed
घटक सहीNavController
लोड होने से पहले शुरू हो जाती है।displayFeed()
twiner
आइटम प्राप्त करता है, जो अनिवार्य रूप से उपयोगकर्ता प्रोफ़ाइल आइटम है, और उसके बाद उपयोगकर्ता प्रोफ़ाइलuserProfile
चर में संग्रहीत करता है।- एक बार उपयोगकर्ता प्रोफ़ाइल लोड होने के बाद, वैश्विक
feedCards
पर्यवेक्षणloadFeed()
के बराबर सेट है, जो एक अवलोकन योग्य सरणी देता है। loadFeed()
उपयोगकर्ता प्रोफ़ाइल में संग्रहीत फ़ीड संदर्भों की सूची लोड करने के लिएuserProfile
वैश्विक वस्तु काid
मान का उपयोग करता है।- इस स्नैपशॉट को तब सदस्यता लिया गया है और स्थानीय
feed
चर फ़ीड संदर्भों की परिणाम सूची के बराबर सेट है। loadFeed
एक अवलोकन योग्य वस्तु देता है जिसमेंfeed
संदर्भ सूची प्रत्येक फ़ीड संदर्भ में डेटा द्वारा मैप की जाती है।pullFeedData(number)
फ़ीड ऑब्जेक्ट के संदर्भ में आता है और संबंधित फ़ीड डेटा के साथ एक अवलोकन योग्य देता है।
क्या काम करता है
alert(JSON.stringify(feedData));
अलर्ट सहीfeed
वस्तुमूल रूप से सब कुछ।
काम नहीं करता क्या
feed.map(...
फ़ीड सरणी क्योंकिpullFeedData(number)
खींचतान को अपडेट नहीं करता औरfeedData
एसिंक्रोनस रूप से देता है। इस प्रकार,alert(JSON.stringify(data));
displayFeed()
अलर्ट[null]
में।
कोड
feed.ts
userProfile:any;
feed: FirebaseListObservable<any>;
feedData: FirebaseObjectObservable<any>;
feedCards: Observable<any[]>;
constructor(public db: AngularFireDatabase, public nativeStorage: NativeStorage) {}
displayFeed():void {
this.nativeStorage.getItem('twiner').then((res) => {
this.userProfile = res;
this.feedCards = this.loadFeed();
this.feedCards.subscribe((data)=>{
alert(JSON.stringify(data));
})
});
}
loadFeed():Observable<any[]> {
var feed;
this.feed = this.db.list('/twiners/' + this.userProfile.id + '/feed', { preserveSnapshot: true });
this.feed.subscribe((snapshots)=>{feed = snapshots});
return Observable.of(feed.map((snapshot) => {
this.pullFeedData(snapshot.val()).subscribe((feedData)=>{
alert(JSON.stringify(feedData));
return feedData;
});
})).delay(1000);
}
pullFeedData(twine:number):any {
return this.db.object('/twines/' + twine, { preserveSnapshot: true });
}
feed.html
<ion-content fullscreen scroll="true" overflow-scroll="true">
<ion-card *ngIf="feedCards | async">feedCards exist</ion-card>
<twine-feed-card *ngFor="let feedCard of feedCards | async"
[data]="feedCard"
></twine-feed-card>
</ion-content>
सारांश
feed.map
फ़ीड ऑब्जेक्ट्स के साथ feed
अपडेट नहीं करता है क्योंकि नया डेटा असीमित रूप से खींचा जा रहा है। मुझे इसके लिए एक फिक्स चाहिए।
धन्यवाद!
आप इसे क्षेत्रों के अंदर चलाने की कोशिश की थी ..? (मैं listobservables का उपयोग करता था, अब मैं इस वास्तविक समय की कार्यक्षमता को प्राप्त करने के लिए इवेंट उत्सर्जकों का उपयोग करता हूं) –
@RajaYogan क्या आप ज़ोन में इस कार्यक्षमता का उपयोग करने के तरीके को दोहराते हैं? संक्षेप में, मुझे नहीं पता कि वह क्या है। –
कोई जांच नहीं .. क्या आपको यहां एक चेतावनी में डेटा मिलता है ..? this.feedCards.subscribe ((डेटा) => { अलर्ट (JSON.stringify (डेटा)); }) –