【问题标题】:Shopify Storefront API: Getting referenced variant with GraphQLShopify Storefront API:使用 GraphQL 获取引用的变体
【发布时间】:2020-06-05 20:37:07
【问题描述】:

我正在使用 Shopify Storefront API 和 Accentuate 来尝试获取特定变体,但它对我不起作用。

简短版本:当我在网站上选择一个变体时,我会得到 url:(... url ...)?variant=31696763027492。在 GraphQL 中的变体 = 之后,我如何获得这些数字?它与 ID 不匹配。

长版...

在产品变体中,我引用了另一个产品的变体(使用 Accentuate)。我需要得到的是我所引用的变体。

当我提取产品中引用的变体(作为元字段,使用 GraphQL)时,我得到以下信息:

{
"key": "products_in_package",
"value": "pakke-produkt-gavepose:31696763027492"
}

我的问题是值中 : 之后的数字。我发现这些是在“实际”Shopify 网站上选择变体时产品 URL 后面的数字((... url ...)?variant=31696763027492),但我看不到我如何使用它们,因为我无法通过 GraphQL 在实际变体上找到这些数字。

它与“id”或我在该变体上可以找到的任何其他内容都不匹配。如果我尝试获取 productByHandle,我也不能包含这些数字。

那么,是否有人对我如何使用它通过 GraphQL 获取实际产品变体有任何想法?或者关于我还能做些什么来将特定产品变体连接到另一个产品变体的想法?

【问题讨论】:

    标签: graphql shopify variant storefront


    【解决方案1】:

    店面 API 和管理 API 返回不同格式的 Id

    • 店面 API:"Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0LzQ3NjA3ODY1MDE3MDM="

    • 管理 API:"gid://shopify/Product/4760786501703"

    但是彼此之间有转换的方式,使用函数atob

    atob("Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0LzQ3NjA3ODY1MDE3MDM=") 将获得 Admin API Id

    对于 NodeJS 包:https://www.npmjs.com/package/atob

    【讨论】:

    • 非常非常有帮助,拯救了我的一天
    【解决方案2】:

    问题是(或曾经是)这些数字不是当您通过 GraphQL 从产品中获取 id 时获得的数字。你会得到一个更长的 id,比如“Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0VmFyaWFudC8zMTY5NDA3MjQxNDI0NA==”。

    但是,我发现在您提到的 id (gid://shopify/ProductVariant/31646396055604) 上使用 btoa() JavaScript 函数,我得到了从产品本身获得的长 id。所以问题解决了!

    【讨论】:

      【解决方案3】:

      变体 ID 和 GraphQL 变体 ID 密切相关。

      • 变体 ID - 31646396055604
      • GraphQL 变体 ID - gid://shopify/ProductVariant/31646396055604

      GraphQL ID 与 Variant id 相同,但您必须在其前面添加字符串 gid://shopify/ProductVariant/

      所以你的 GraphQL 请求会变成这样:

      {
        productVariant(id:"gid://shopify/ProductVariant/31646396055604"){
          title
          product{
            id
          }
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2018-10-11
        • 2021-03-17
        • 1970-01-01
        • 1970-01-01
        • 2022-11-26
        • 2021-02-23
        • 2019-03-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多