繁体   English   中英

根据ID或属性迭代Firestore Android集合

[英]Iterating Firestore Android collection on basis of ID or attribute

我要迭代从集合文档ID开始的集合。

有没有类似下面的方法可以让我们读取以id或attribute id开头的数据?

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

要么

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

我知道我可以根据ID阅读该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并在此基础上读取数据...

没有:

startReadingDocumentAt("02cubnmO1wqyz6yKg571")

也不

startReadingWhereEqualTo("questionID","02cubnmO1wqyz6yKg571")

在firestore中,但根据您的数据库架构,要解决此问题,可以使用以下查询:

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

更多信息在这里

创建并返回带有附加筛选器的新查询,该附加筛选器的文档必须包含指定的字段,并且该值应大于或等于指定的值。

您可以使用查询游标执行此操作。 例如:

db.collection("questions")
    .orderBy("questionID")
    .startAt("02cubnmO1wqyz6yKg571")
    .limit(10)
    .get()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM