首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flutter & Firestore -关于"startAfter“分页的问题

Flutter & Firestore -关于"startAfter“分页的问题
EN

Stack Overflow用户
提问于 2018-11-27 10:38:09
回答 2查看 1.7K关注 0票数 0

我可以使用"startAfter“和"limit”来进行分页,但它有错误。

例如,在Firestore DB中,我有7条记录:

代码语言:javascript
复制
{"title": "item1", "create_datetime": "2018-11-11 11:11:11"}
{"title": "item2", "create_datetime": "2018-11-11 11:11:11"}
{"title": "item3", "create_datetime": "2018-11-11 11:11:11"}
{"title": "item4", "create_datetime": "2018-11-11 11:11:11"}
{"title": "item5", "create_datetime": "2018-11-11 11:11:11"}
{"title": "item6", "create_datetime": "2018-11-11 11:11:11"}
{"title": "item7", "create_datetime": "2018-12-22 22:22:22"}

当页面大小为5时,第一页就可以了,因为我使用了:

代码语言:javascript
复制
.orderBy('create_datetime').limit(5)

它给我提供了1-5项。

当它加载第二个页面时,我使用:

代码语言:javascript
复制
.orderBy('create_datetime').startAfter(['2018-11-11 11:11:11']).limit(5)

问题是第二个页面结果只有item7,item6消失了。"startAt“也有同样的问题。

我真的希望它有“偏移”功能。有谁有解决方案吗?

EN

回答 2

Stack Overflow用户

发布于 2018-12-03 15:45:04

您的查询将始终返回'item7‘,因为您总是在2018-11-11 11:11:11之后开始,所以它将忽略所有其他项,并转到最后一个2018-11-11 11:11:11并从那里跳过。您需要获取返回的最后一项并保留对它的引用,然后在startAfter上使用文档引用开始。通常,flutter的startAfter需要一个列表来保存对它的引用。

看看Firebase query cursors

票数 1
EN

Stack Overflow用户

发布于 2019-02-22 16:31:57

目前flutter不支持startAfter(lastDocFetched)startAt(anyDoc)。正如您所说的,这是必需的,因为它从字符串匹配值开始,而不是从特定的文档开始。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53491952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档