2016-12-04 41 views
1

任何幫助都非常感謝。非常感謝您的參與。Firebase,從一大組數據中查詢特定鍵

讓我們說,Articles節點下有大量的文章。

"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" 
} 

這篇文章由一些作者發佈。註冊用戶可以瀏覽文章,並喜歡它們。所喜歡的articles keys存儲在Users配置文件下的favArticles節點中。由於文章包含大量的數據,因此只有文章的keyname存儲在User配置文件中。

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

讓我們說,用戶已經喜歡了1000大約50篇現在,如果我要顯示在RecyclerView用戶喜愛的文章,我應該怎麼寫我的查詢來接從文章的具體條款清單?

+0

我的計劃是把'favArticles key'放入一個arrayList。對於arrayList中的每個鍵,附加一個valueEvenListener並獲取文章的DataSnapShot並顯示。我不知道這是否是實現我的目標的正確方法。另外,這樣,我不能使用RecyclerView。 –

回答

2

既然你已經保持最愛每個用戶的列表,你只是:

  1. 載荷的收藏夾列表
  2. 疊代
  3. 負荷的參考文章爲每個

如果您擔心這種循環加載的性能:Firebase將通過同一連接加載步驟3中的所有文章,因此請求是流水線式的。對於合理數量的文章,這實際上是相當快的。我的答案在這裏看到更多的細節:Speed up fetching posts for my social network app by using query instead of observing a single event repeatedly