metafieldsSet 不传 type 直接写入失败
现象#
调 metafieldsSet 只传 ownerId、namespace、key、value,userErrors 提示 type 不能为空;同一份数据在后台商品页手工填却能保存。
原因#
MetafieldInput.type是必填项,服务端靠它做校验,不会从已有 definition 反推- 类型必须与 definition 完全一致,number_integer 不能简写成 number
- 没有 definition 时类型决定隐式创建的 schema,写错会让后续同类写入全部失败
- 列表类型要写成
list.single_line_text_field,漏掉前缀会被当成单值处理
处理步骤#
- 先查
metafieldDefinitions(ownerType: PRODUCT)拿到准确的 type - 在 mutation 里为每条 metafield 显式补
type,与 definition 逐字一致 - 按类型序列化值:json 用 JSON 字符串,列表用 JSON 数组字符串
- 单次最多 25 条,超出要拆批,避免一条失败拖垮整批
- 写后回读
metafield.type与 value,确认与输入一致
验收标准#
userErrors 为空,回读的 type 与 definition 一致,后台商品页该字段能正常编辑并展示。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。