2016-12-04 6 views
1

Jede Hilfe wird sehr geschätzt. Vielen Dank für Ihre Zeit.Firebase, Abfrage bestimmter Schlüssel aus einer großen Reihe von Daten

Sagen wir, es gibt einen großen Satz von Artikeln unter Articles Knoten.

"Articles" : { 
"article1Key" : { 
    "articleAuthor" : "Author", 
    "articleFavByNo" : 21, 
    "articleKey" : "Key", 
    "articleName" : "Name", 
    "articlePostedOn" : "21/07/11", 
    "articleTopic" : "Topic" 
}, 
"article2Key" : { 
    "articleAuthor" : "Author", 
    "articleFavByNo" : 21, 
    "articleKey" : "Key", 
    "articleName" : "Name", 
    "articlePostedOn" : "21/07/11", 
    "articleTopic" : "Topic" 
}, 
... 
"article10Key" : { 
    "articleAuthor" : "Author", 
    "articleFavByNo" : 21, 
    "articleKey" : "Key", 
    "articleName" : "Name", 
    "articlePostedOn" : "21/07/11", 
    "articleTopic" : "Topic" 
} 

Die Artikel werden von einigen Autoren veröffentlicht. Registrierte Benutzer können die Artikel durchsuchen und mögen. Die geliebten articles keys sind in Users Profil unter favArticles Knoten gespeichert. Da der Artikel eine riesige Menge an Daten enthält, sind nur die key und name des Artikels unter User Profil gespeichert.

"Users" : { 
"ZtlIQ2d1qJT1XpmHuGxwFSwaiEy2" : { 
    "emailId" : "[email protected]", 
    "favArticles" : { 
    "article1Key" : { 
     "name" : "article1" 
    }, 
    "article7Key" : { 
     "name" : "article7" 
    }, 
    "article4Key" : { 
     "name" : "article4" 
    } 
    }, 
    "firstName" : "Vimala", 
    "image" : "default", 
    "lastName" : "Sridhar" 
} 
} 

Lassen Sie uns sagen, dass der Benutzer einige 50 Artikel von 1000. Sie nun die spezifischen Artikel aus dem Artikel zu holen, wenn ich anzeigen möchten Lieblingsartikel in einem RecyclerView, wie soll ich schreibe meine Abfrage der Benutzer gemocht hat Liste?

+0

Mein Plan ist es, den 'favArticles Schlüssel' in eine ArrayList zu legen. Für jeden Schlüssel in der ArrayListe fügen Sie einen WertEvenListener hinzu und holen Sie den DataSnapShot des Artikels und der Anzeige. Ich weiß nicht, ob dies der richtige Weg ist, um mein Ziel zu erreichen. Außerdem kann ich RecyclerView nicht verwenden. –

Antwort

2

Da Sie bereits für jeden Benutzer eine Liste der Favoriten halten, würden Sie gerade:

  1. Last, die Liste der Favoriten
  2. iterieren es
  3. Last der Referenzen Artikel für jede
  4. Wenn Sie sich Sorgen über die Leistung dieses loop-and-load machen: Firebase lädt alle Artikel in Schritt 3 über die gleiche Verbindung, so dass die Anfragen pipelined sind.

Bei einer angemessenen Anzahl von Artikeln ist dies tatsächlich ziemlich schnell. Siehe meine Antwort hier für weitere Details: Speed up fetching posts for my social network app by using query instead of observing a single event repeatedly

Verwandte Themen