【问题标题】:PHP - Firebase query only gets 20 collection entriesPHP - Firebase 查询仅获取 20 个集合条目
【发布时间】:2023-02-18 06:48:49
【问题描述】:

我有个问题。在我的 PHP Firebase 查询中,我遇到的问题是它似乎只能获取我的数据库集合中的 20 个文档。

我正在获取所有文档数据,然后将每个条目推送到一个单独的数组中以最终对条目进行排序。

虽然到目前为止一切正常 - 每次代码在我的服务器上运行时,我似乎只获得 20 个条目。

这是我获取数据的代码:

$tracksCount = 0;

$tracksList = $firestore->collection('lists/'.$listId.'/tracks');
    
$tracksDocuments = $tracksList->documents();

$sortedTracks = [];

    foreach ($tracksDocuments as $track) {
        if ($track->exists()) {
            
            
            $trackData = $track->data();
            array_push($sortedTracks, $trackData);

        }
    }



array_multisort( array_column($sortedTracks, "index"), SORT_ASC, $sortedTracks);


    foreach ($sortedTracks as $track) {
            
// pushing fetched data for output....
            $tracksCount = $tracksCount + 1;
    }

这段代码确实有效,我得到了所有预期的结果——但只针对 20 个文档。 (如果集合中的文档较少,则获取的文档也较少。但如果超过 20 个文档,则上限为 20 个)

我找不到问题所在。也许有人可以帮忙?

【问题讨论】:

  • 肖恩,请让我知道以下建议是否有帮助。

标签: php google-cloud-firestore


【解决方案1】:

在我的例子中,我通过简单地调用 rest 请求来获取 firebase 集合,我只得到 20 个集合对象。

通过将 ?pageSize=1000 添加到查询 URL,我能够获取所有集合,如下所示。

https://firestore.googleapis.com/v1/projects/<project-name>/databases/(default)/documents/<collection-name>?pageSize=1000

【讨论】:

    【解决方案2】:

    对于您可以请求的文档的最大数量没有硬性限制,这也不是不合理的。实际上没有记录可以检索的文档数量限制,尽管可能有一个物理限制,大多数情况下会取决于您的应用程序的内存和带宽。
    Cloud Firestore 的最大深度为 functions calls in the security rules
    如果你使用Firestore REST API的list method,你可以在方法中设置“pageSize”参数来指定返回文档的最大数量,然后将这些数据分页以可读的格式显示,同时能够滚动页面导航并访问这些文档列表。
    这些也可以检索 ID 可以作为数组输入传递,这与您尝试解决的问题类似。

    检查以下类似示例:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 2017-06-16
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      相关资源
      最近更新 更多