每日整理真实提问 356 个问题 · 726 个回答 需要系统性的技术文档?看 Shopify 技术百科 1000 篇 → 400-873-8117
已解决 提问于 2 个月前

metafield 写入报错,说类型不匹配

2 个回答 5,106 次浏览 Admin API 与 GraphQL 最后活跃 1 个月前
99

用 metafieldsSet 写一个 JSON 类型的字段,一直返回 INVALID_VALUE,值看起来是合法的 JSON。

陈
陈工提问者
Shopify 认证开发者 · 专注主题与 Liquid
2 个月前提问 · 已收到 2 个回答

2 个回答

已采纳 · 提问者确认解决
25

先把判断放在前面:metafield 的类型在定义时就固定了,写入的值必须严格匹配定义类型,JSON 类型要求值是字符串化的 JSON。

1处理顺序

  1. 先查 metafieldDefinition 的 type,确认是 json、list.single_line_text_field 还是 number_integer。
  2. type: "json" 时 value 要传字符串:"{\"a\":1}",不是对象。
  3. namespace 必须是已定义的命名空间,custom 需要在后台先建好定义。
  4. 批量写入用 metafieldsSet(复数),单条用 metafieldSet,混用会报参数错。
  5. 写入后立刻回读 value 与 type 验证。
验收:写入返回无 userErrors,回读的值与写入一致且后台可见。
风 风格技术团队 回答于 2 个月前
11

list 类型的坑更多:list.single_line_text_field 的 value 要传 JSON 数组字符串,写成逗号分隔会变成单个元素。

泽 阿泽 · 前端工程师 · 2 个月前

你的处理方式是什么?

写下你实际验证过的步骤,比「我也有这个问题」有用得多。当前版本为静态展示,提交后会由团队整理并回复。

描述你遇到的现象、店铺环境(主题 / 套餐 / 应用)、已经试过哪些操作……
我要单独提问 工作日 10 分钟内回复,可直接加微信 fenggejishu