Firebase,从大量数据中查询特定键

Firebase, query specific keys from a large set of data

非常感谢任何帮助。非常感谢您的宝贵时间。

假设,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 存储在 favArticles 节点下的 Users 个人资料中。由于文章下包含大量数据,因此User个人资料下仅存储文章的keyname

"Users" : {
"ZtlIQ2d1qJT1XpmHuGxwFSwaiEy2" : {
  "emailId" : "vs@gmail.com",
  "favArticles" : {
    "article1Key" : {
      "name" : "article1"
    },
    "article7Key" : {
      "name" : "article7"
    },
    "article4Key" : {
      "name" : "article4"
    }
  },
  "firstName" : "Vimala",
  "image" : "default",
  "lastName" : "Sridhar"
}
}

假设用户喜欢了 1000 篇文章中的大约 50 篇。现在如果我想在 RecyclerView 中显示用户最喜欢的文章,我应该如何编写查询以从文章列表中选择特定的文章?

由于您已经为每个用户保留了收藏夹列表,您只需:

  1. 加载收藏夹列表
  2. 遍历它
  3. 为每个加载参考文章

如果您担心此 loop-and-load 的性能:Firebase 通过同一连接加载第 3 步中的所有文章,因此请求是流水线式的。对于合理数量的文章,这实际上是相当快的。有关更多详细信息,请在此处查看我的回答:Speed up fetching posts for my social network app by using query instead of observing a single event repeatedly