Firebase 为什么Where查询在一页上限制为10,而在另一页上不限制为10?

Firebase 为什么Where查询在一页上限制为10,而在另一页上不限制为10?,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我曾经处理过10个条目的限制,它在一页上工作得很好。所以我在另一个页面上做了完全相同的事情,获取同一集合中的文档,但引用了不同的字段,问题是第二个查询只返回10个文档 起初,我在两页上做了完全相同的查询。第一页查询在任何页面上都正常工作。然后我认为问题可能出在查询本身,但两者唯一不同的是字段的名称,我认为这可能与我在谷歌云平台上的索引有关。所以我重新创建了这两个索引,但仍然不起作用。老实说,我不知道会出什么问题 我会把这两个查询和我的索引截图,希望有人能理解​​可能发生的事情 第一次查询(工作)

我曾经处理过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();
    }