Shopify Admin API

metafieldsSet 不传 type 直接写入失败

现象#

调 metafieldsSet 只传 ownerId、namespace、key、value,userErrors 提示 type 不能为空;同一份数据在后台商品页手工填却能保存。

原因#

  • MetafieldInput.type 是必填项,服务端靠它做校验,不会从已有 definition 反推
  • 类型必须与 definition 完全一致,number_integer 不能简写成 number
  • 没有 definition 时类型决定隐式创建的 schema,写错会让后续同类写入全部失败
  • 列表类型要写成 list.single_line_text_field,漏掉前缀会被当成单值处理

处理步骤#

  1. 先查 metafieldDefinitions(ownerType: PRODUCT) 拿到准确的 type
  2. 在 mutation 里为每条 metafield 显式补 type,与 definition 逐字一致
  3. 按类型序列化值:json 用 JSON 字符串,列表用 JSON 数组字符串
  4. 单次最多 25 条,超出要拆批,避免一条失败拖垮整批
  5. 写后回读 metafield.type 与 value,确认与输入一致

验收标准#

userErrors 为空,回读的 type 与 definition 一致,后台商品页该字段能正常编辑并展示。

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