Запрос Firebase для получения данных в заданном диапазоне - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть узел с именем quotes в Firebase.Я сталкиваюсь с проблемами при получении данных в Android для определенного диапазона.Я хочу получить 3 идентификатора продолжения кавычек, начиная с 2. Вот моя база данных запросов:

"quotes" : {
"-L75elQJaD3EYPsd4oWS" : {
  "authorName" : "Hellen v",
  "famousQuote" : "When one door of happiness closes, another opens; but often we look so long at the closed door that we do not see the one which has been opened for us.",
  "id" : "1",
  "uploadedBy" : "Admin"
},
"-L7GOvDNI-o_H8RvNwoN" : {
  "authorName" : "Rocky Balboa",
  "famousQuote" : "It's not about how hard you can hit; it's about how hard you can get hit and keep moving forward.",
  "id" : "2",
  "uploadedBy" : "Admin"
},
"-L7GP9oBv5NR1T6HlDd4" : {
  "authorName" : "African proverb",
  "famousQuote" : "If you want to go fast, go alone. If you want to go far, go together.",
  "id" : "3",
  "uploadedBy" : "Admin"
},
"-L7GPjM1F3_7Orcz0Q1q" : {
  "authorName" : "A.P.J Abdul Kalam",
  "famousQuote" : "Don’t take rest after your first victory because if you fail in second, more lips are waiting to say that your first victory was just luck.",
  "id" : "4",
  "uploadedBy" : "Admin"
},

Ниже приведено правило, которое я использую для кавычек

"quotes": {
 ".indexOn": ".value"
}

Как я могу получить кавычки с id 2,3 и 4?

1 Ответ

0 голосов
/ 29 сентября 2018

Если у вас есть более 4 записей в вашей базе данных, для решения этой проблемы вы можете использовать запрос, в котором вы должны объединить startAt() и endAt() методы, чтобы ограничить оба конца вашего запроса следующим образом:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("quotes").orderByChild("id").startAt("2").endAt("4");
query.addListenerForSingleValueEvent(/* ... */);

Пожалуйста, ознакомьтесь с дополнительной информацией о методе startAt () в Firebase Query:

Создайте запрос, ограниченный только для возврата дочерних узлов со значением, большим или равнымзаданное значение, используя данную директиву orderBy или приоритет по умолчанию.

А вот дополнительные сведения о методе endAt () в Firebase Query:

Создайте запрос, ограниченный, чтобы возвращать только дочерние узлы со значением, меньшим или равным данному значению, используя данную директиву или приоритет orderBy по умолчанию.

Редактировать: Согласнок вашему комментарию, если вы хотите, чтобы элементы, у которых свойство id было установлено в 2, 3 и 4, вы должны использовать вложенные запросы, такие как:

Query queryTwo = rootRef.child("quotes").orderByChild("id").equalsTo("2");
queryTwo.addListenerForSingleValueEvent(
    List<Item> list = new ArrayList();
    list.add(itemTwo);
    Query queryThree = rootRef.child("quotes").orderByChild("id").equalsTo("3");
    queryThree.addListenerForSingleValueEvent(
        list.add(itemThree);
        Query queryFour = rootRef.child("quotes").orderByChild("id").equalsTo("4");
        queryFour.addListenerForSingleValueEvent(
            list.add(itemFour);

            //Do what you need to do with the list that contains three items
        );
    );
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...