Admin API 分页 cursor 用错导致数据重复或漏读
现象#
同步商品或订单时,总数对不上:有的记录被处理两次,有的整页被跳过;日志里 pageInfo.hasNextPage 一直为 true。
原因#
- 把
endCursor当成偏移量使用,或在同一查询里复用了上一页的 cursor - 分页过程中对数据做了写操作(改状态、加标签),导致结果集顺序变化
- 用 REST 的
page参数翻页,同时数据在变动,出现漂移 - 忽略了
hasNextPage为 false 时仍继续请求
处理步骤#
- GraphQL 分页严格用
pageInfo.endCursor+after,每次都从响应里取新值 - 查询时加稳定排序(如
sortKey: ID或CREATED_AT),避免顺序漂移 - 批量任务改为「先读全量到本地,再统一写回」,不要在翻页过程中修改同一条记录
- 记录每页的首尾 ID,出现重复时用 ID 去重后再入库
验收标准#
全量同步的记录数与后台导出一致;重复处理数为 0,且能完整跑完最后一页。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。