我要迭代从集合文档ID开始的集合。
是否有下面的方法可以让我们读取以id或属性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
| |
我已经走过through this
说明
我不想做RecyclerView pagination
。我想在每次活动开始时加载下一个10个问题。因此,我以相同的方式调用查询,但需要保存 DocumentSnapShot 。所以我决定保存问题ID并在此基础上读取数据...
答案 0 :(得分:1)
没有:
startReadingDocumentAt("02cubnmO1wqyz6yKg571")
也
startReadingWhereEqualTo("questionID","02cubnmO1wqyz6yKg571")
在firestore中,但根据您的数据库架构,要解决此问题,可以使用以下查询:
db.collection("questions").
whereGreaterThanOrEqualTo("questionID","02cubnmO1wqyz6yKg571")
.limit(10)
.get()
addOnCompleteListener.(/* ... */)
更多信息here:
使用附加的过滤器创建并返回一个新的查询,该过滤器中的文档必须包含指定的字段,并且该值应大于或等于指定的值。
答案 1 :(得分:1)
您可以使用query cursors进行此操作。例如:
db.collection("questions")
.orderBy("questionID")
.startAt("02cubnmO1wqyz6yKg571")
.limit(10)
.get()