0

我对 Shopify Storefront API 和 GraphQL 都是全新的。在过去的 3-4 个小时里,我一直在努力阅读文档并尝试查找和编写一个查询,无论如何,在我看来,这应该很简单。

简而言之,我有一个店面,其中包含某些带有自定义购买按钮的产品。每个购买按钮的 ID 对应于我实际 shopify 商店中的产品 ID,即 ../products/5854987878567

当页面加载时,我需要查询我的商店以获取更新的价格,然后在按钮文本中反映这些价格,以便人们准确了解他们花了多少钱。

为此,我提取了所有唯一的按钮 ID 并将它们推送到一个新的数组中,其想法是我可以使用 GraphQL 一次查询所有 ID 并获取一个不错的对象,然后我可以相应地解析和更新按钮。

经过几个小时的兜售,我离成功还差得远。

我一直在阅读Query Root 文档,似乎他们确实有products连接,我认为它是查询商店中所有产品的入口点。

然而,在query字段本身下,他们似乎拥有每个字段但 id。

available_for_sale
created_at
product_type
tag
title
updated_at
variants.price
vendor 

是他们拥有的所有领域。自从我开始写这篇文章以来,我发现sortKey了,但它因错误"Field 'sortKey' doesn't exist on type 'QueryRoot'"叹息而失败。

这是我目前正在使用的查询。我不确定这个想法是否可行,因为如果我一次只能查询一个 id,那么每位访问者将需要数十次 API 调用。

$.ajax({
              type : 'POST',
              url : 'https://xxxxx.myshopify.com/api/2020-10/graphql.json',
              headers: {
                'X-Shopify-Storefront-Access-Token': 'xxxxx',
                'Content-Type': 'application/graphql'
              },
              data: 'query products { sortKey(id: "5854987878567") }',
              success: function(res) {
                console.log(res)
              },
              error: function(status) {
                console.log(status)
              }
            });

任何帮助,将不胜感激!

4

3 回答 3

1

query = ''' { productVariants(first:1,query:"title:%s") { edges { node { id title } } } }
''' % title

创建一个函数并给出“title”作为参数。

def productvariant(title): client = shopify.GraphQL() query = ''' { productVariants(first:1,query:"title:%s") { edges { node { id title } } } }
''' % title

于 2020-10-23T07:45:44.210 回答
0

您可以像这样从产品变体中获取价格 - "{
productVariants(first:10, query:"{apply your condition here}") { edges { node { storefrontId compareAtPrice price } } } } % id"

于 2020-10-23T07:42:01.707 回答
0

我不明白你的意思,但下面的 GraphQL为每个产品(10 个产品)获取"id""title""description""the first image""price" :

{
    products(first:10) {
    edges {
      node {
        id
        title
        description
        featuredImage {
          url
        }
        variants(first: 1) {
          edges {
            node {
              priceV2 {
                amount
              }
            }
          }
        } 
      }
    }
  }
}
于 2022-01-07T03:42:06.723 回答