Shopify Admin API

Admin API 分页 cursor 用错导致数据重复或漏读

现象#

同步商品或订单时,总数对不上:有的记录被处理两次,有的整页被跳过;日志里 pageInfo.hasNextPage 一直为 true。

原因#

  • 把 endCursor 当成偏移量使用,或在同一查询里复用了上一页的 cursor
  • 分页过程中对数据做了写操作(改状态、加标签),导致结果集顺序变化
  • 用 REST 的 page 参数翻页,同时数据在变动,出现漂移
  • 忽略了 hasNextPage 为 false 时仍继续请求

处理步骤#

  1. GraphQL 分页严格用 pageInfo.endCursor + after,每次都从响应里取新值
  2. 查询时加稳定排序(如 sortKey: ID 或 CREATED_AT),避免顺序漂移
  3. 批量任务改为「先读全量到本地,再统一写回」,不要在翻页过程中修改同一条记录
  4. 记录每页的首尾 ID,出现重复时用 ID 去重后再入库

验收标准#

全量同步的记录数与后台导出一致;重复处理数为 0,且能完整跑完最后一页。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。