Firebase 为什么Where查询在一页上限制为10,而在另一页上不限制为10?
我曾经处理过10个条目的限制,它在一页上工作得很好。所以我在另一个页面上做了完全相同的事情,获取同一集合中的文档,但引用了不同的字段,问题是第二个查询只返回10个文档 起初,我在两页上做了完全相同的查询。第一页查询在任何页面上都正常工作。然后我认为问题可能出在查询本身,但两者唯一不同的是字段的名称,我认为这可能与我在谷歌云平台上的索引有关。所以我重新创建了这两个索引,但仍然不起作用。老实说,我不知道会出什么问题 我会把这两个查询和我的索引截图,希望有人能理解可能发生的事情 第一次查询(工作):Firebase 为什么Where查询在一页上限制为10,而在另一页上不限制为10?,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我曾经处理过10个条目的限制,它在一页上工作得很好。所以我在另一个页面上做了完全相同的事情,获取同一集合中的文档,但引用了不同的字段,问题是第二个查询只返回10个文档 起初,我在两页上做了完全相同的查询。第一页查询在任何页面上都正常工作。然后我认为问题可能出在查询本身,但两者唯一不同的是字段的名称,我认为这可能与我在谷歌云平台上的索引有关。所以我重新创建了这两个索引,但仍然不起作用。老实说,我不知道会出什么问题 我会把这两个查询和我的索引截图,希望有人能理解可能发生的事情 第一次查询(工作)
for(int i=0;i
第二次查询(不工作):
for(int i=0;i
索引:
更新:
我在做一些测试,我发现了一些东西。删除第二个索引(postId)后,我在终端中遇到以下错误:
正如我在print()中看到的,列表中有11项,但在错误消息中只有10项。如果您遇到此问题,请更改使用Firebase函数的方法
for (int i = 0; i < splitFollowing.length; i++) {
QuerySnapshot querySnapshotFollowing = await db
.collection('posts')
.where('ownerId', whereIn: splitFollowing.elementAt(i))
.orderBy('timestamp', descending: true)
.limit(20)
.getDocuments();
return querySnapshotFollowing.documents.map((documentSnapshot) {
return FeedPost.fromDocument(documentSnapshot);
}).toList();
}
for (int i = 0; i < splitCollections.length; i++) {
QuerySnapshot querySnapshotCollection = await db
.collection('posts')
.where('postId', whereIn: splitCollections.elementAt(i))
.orderBy('timestamp', descending: true)
.limit(20)
.getDocuments();
return querySnapshotCollection.documents.map((documentSnapshot) {
return CollectionPost.fromDocument(documentSnapshot);
}).toList();
}