gpt4 book ai didi

dart - Flutter Firestore startAt() endtAt() 在 orderby 字符串值时不起作用

转载 作者:IT王子 更新时间:2023-10-29 06:40:18 25 4
gpt4 key购买 nike

我尝试在按标题排序时使用 startAt([1]) 和 endAt([3]),但它不起作用。

QuerySnapshot snapshot = await Firestore.instance.collection('items')
.orderBy("title", descending: false).startAt([1]).endAt([2]).limit(2).getDocuments();

当我尝试按顺序排列 startAt([1]) 和 endAt([3]) 时,它起作用了。

QuerySnapshot snapshot5 = await Firestore.instance.collection('items')
.orderBy("rank", descending: false).startAt([1]).endAt([2]).limit(2).getDocuments();

当我不使用 endAt() 时工作​​

为什么我按标题排序时不起作用?

QuerySnapshot snapshot = await Firestore.instance.collection('items')
.orderBy("title", descending: false).startAt([1]).limit(2).getDocuments();

有人知道吗?

我尝试过的:1.确保包是最新的2. 在 firestore 上创建索引

[这不起作用]QuerySnapshot snapshot = await Firestore.instance.collection('items').orderBy("title", descending: false).startAt([1]).endAt([2]).limit(2).getDocuments();

[THIS WORKS]
QuerySnapshot snapshot5 = await Firestore.instance.collection('items')
.orderBy("rank", descending: false).startAt([1]).endAt([2]).limit(2).getDocuments();

[THIS WORKS]
QuerySnapshot snapshot = await Firestore.instance.collection('items')
.orderBy("title", descending: false).startAt([1]).limit(2).getDocuments();

我期望的是在过滤时能够使用 endAt() 但它抛出错误

最佳答案

我假设您的 rank 字段是数字,而您的 title 字段是字符串。在这种情况下,这是预期的行为。

Firestore 查询按 过滤,而不是按偏移量过滤。所以当你:

.orderBy("rank", descending: false).startAt(1).endAt(2)

文档按排名排序,然后返回排名在 1 到 2(含)之间的文档。

当你这样做时:

.orderBy("title", descending: false).startAt(1).endAt(2)

文档按标题排序,然后返回标题在 1 和 2 之间的文档。但是由于标题是字符串而不是数字,这意味着没有文档符合条件并且不会返回任何内容。

Firestore 没有偏移查询的概念,您告诉它跳过前 n 个结果。

关于dart - Flutter Firestore startAt() endtAt() 在 orderby 字符串值时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54300803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com