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. Поскольку статья содержит огромное количество данных под ней, только key и name статьи хранятся в профиле User.

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

Допустим, пользователю понравились 50 статей из 1000. Теперь, если я хочу отобразить любимые статьи пользователя в RecyclerView, как мне написать запрос, чтобы выбрать конкретные статьи из списка статей?


person Nishanth Sreedhara    schedule 04.12.2016    source источник
comment
Мой план состоит в том, чтобы поместить favArticles key в список массивов. Для каждого ключа в arrayList прикрепите valueEvenListener и получите DataSnapShot статьи и отображения. Я не знаю, правильный ли это путь для достижения моей цели. Кроме того, таким образом я не могу использовать RecyclerView.   -  person Nishanth Sreedhara    schedule 04.12.2016


Ответы (1)


Поскольку у вас уже есть список избранного для каждого пользователя, вы просто:

  1. загрузить этот список избранного
  2. перебрать его
  3. загрузить справочную статью для каждого

Если вас беспокоит производительность этого цикла и загрузки: Firebase загружает все статьи на шаге 3 по одному и тому же соединению, поэтому запросы конвейеризируются. Для разумного количества статей это на самом деле довольно быстро. Подробнее см. мой ответ здесь: Ускорить получение сообщений для моего приложения социальной сети с помощью запроса вместо многократного наблюдения за одним событием

person Frank van Puffelen    schedule 05.12.2016