Shopify Admin API

metafield 超过 10000 字节读出来是 null

现象#

后台能看到完整 JSON,Admin API 也能查到 value,但 Function 里读同一条配置得到 null,折扣逻辑静默不生效,日志没有任何报错。

原因#

  • Function 的 input query 不返回超过 10000 字节的 metafield,直接给 null
  • metafield 本身可存 64KB,json 类型可到 128KB,写入成功不代表 Function 读得到
  • 只按字符数判断大小,中文与 emoji 会让 UTF-8 字节数被严重低估
  • 超限没有异常,Function 拿到空配置后按无规则执行,表现为全部放行

处理步骤#

  1. 用 Buffer.byteLength(JSON.stringify(cfg), 'utf8') 量字节数,别用 length
  2. 把配置拆成多个分片,如 rules_0 到 rules_3,每片留 20% 余量
  3. input query 里逐片读取再合并,同时注意 Function 总输入 JSON 还有独立上限
  4. 写入端用 Buffer.byteLength 校验单片字节数,超限拒绝保存
  5. 在 Function 里对空配置返回明确错误,而不是静默通过

验收标准#

Function 日志能打印出合并且非零的规则条数;单片 byteLength 稳定低于 8000,超限写入被应用拒绝。

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