Итерация коллекции Android Firestore на основе идентификатора или атрибута - PullRequest
0 голосов
/ 29 августа 2018

Я хочу выполнить итерацию коллекции, которая начинается с идентификатора документа коллекции.

Существует ли какой-либо метод, подобный приведенному ниже, который позволяет читать данные, начиная с идентификатора или идентификатора атрибута?

 db.collection("questions").startReadingDocumentAt("02cubnmO1wqyz6yKg571 ").limit(10).get() 

или

db.collection("questions").startReadingWhereEqualTo("questionID","02cubnmO1wqyz6yKg571 ").limit(10).get()

Я знаю, что могу прочитать этот DocumentSnapShot на основе идентификатора и затем могу начать итерацию с элементом lastVisible. но это стоило мне две операции чтения. Можно ли это сделать за один раз?

Firestore-root
    |
    --- questions (collections)
    |     |
    |     --- 02cubnmO1wqyz6yKg571 (questionId document) // myID and my questionID is same
    |            |
    |            --- questionId: "02cubnmO1wqyz6yKg571"
    |            |
    |            --- title: "Question Title"
    |            |
    |            --- date: August 27, 2018 at 6:16:58 PM UTC+3
    |            |

Я уже прошел через это

Объяснение

Я не хочу делать RecyclerView pagination. Я хочу загрузить следующие 10 вопросов каждый раз, когда начинается действие. Поэтому я вызываю запрос таким же образом, но он требует от меня сохранения DocumentSnapShot . Поэтому я решил сохранить вопрос ID и прочитать данные на его основе ...

Ответы [ 2 ]

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

Вы можете сделать это, используя курсоры запросов . E.g.:

db.collection("questions")
    .orderBy("questionID")
    .startAt("02cubnmO1wqyz6yKg571")
    .limit(10)
    .get()
0 голосов
/ 29 августа 2018

Нет:

startReadingDocumentAt("02cubnmO1wqyz6yKg571")

ни

startReadingWhereEqualTo("questionID","02cubnmO1wqyz6yKg571")

В firestore, но в соответствии с вашей схемой базы данных, для решения этой проблемы вы можете использовать следующий запрос:

db.collection("questions").
    whereGreaterThanOrEqualTo("questionID","02cubnmO1wqyz6yKg571")
    .limit(10)
    .get()
    addOnCompleteListener.(/* ... */)

Больше информации здесь :

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

...