PHP调用Firebase查询仅返回20条集合文档,求排查方案
PHP Firestore 查询仅返回20条文档的解决方案
Firestore PHP SDK 的 documents() 方法默认启用分页机制,单次请求最多返回20条文档。要获取集合中的全部数据,你需要通过分页游标(page token)循环发起请求,直到拉取完所有文档。
修改你的数据获取逻辑,加入分页处理:
$tracksCount = 0; $tracksList = $firestore->collection('lists/'.$listId.'/tracks'); $sortedTracks = []; $pageToken = null; do { // 传入分页游标,首次请求传null $tracksDocuments = $tracksList->documents(['pageToken' => $pageToken]); foreach ($tracksDocuments as $track) { if ($track->exists()) { $trackData = $track->data(); $sortedTracks[] = $trackData; } } // 获取下一页游标,无更多数据时返回null $pageToken = $tracksDocuments->nextPageToken(); } while ($pageToken !== null); // 原排序逻辑保持不变 array_multisort(array_column($sortedTracks, "index"), SORT_ASC, $sortedTracks); foreach ($sortedTracks as $track) { // 输出数据处理逻辑 $tracksCount++; }
核心改动说明:
- 用
do-while循环遍历所有分页,直到没有下一页游标为止 - 每次请求时传入上一页的
pageToken参数,确保拉取下一批数据 - 保持原有的排序和数据处理逻辑不变,仅修改数据拉取部分
这样就能完整获取集合中的所有文档,不再受20条的默认限制。
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

