GraphQL:是否可以搜索嵌套字段?

问题描述 投票:0回答:2

我特意使用shopify graphql admin api来查询订单。

我想搜索嵌套的相关字段。

以下是我的查询。

export const orderHistoryQuery = gql`
  query Order($productsFirst: Int!, $productsAfter: String, $filterQuery: String) {
    orders(first: $productsFirst, after: $productsAfter, reverse: true, query:$filterQuery) {
      edges {
        cursor
        node {
          id
          name
          customer {
            id
            metafields(first: 10) {
              edges {
                node {
                  id
                  key
                  value
                  namespace
                }
                cursor
              }
            }
          }
          totalPriceSet {
            shopMoney {
              amount
              currencyCode
            }
          }
          subtotalPriceSet {
            shopMoney {
              amount
              currencyCode
            }
          }
          totalRefundedSet {
            shopMoney {
              amount
              currencyCode
            }
          }
          currencyCode
          email
          phone
          processedAt
          totalShippingPriceSet {
            shopMoney {
              amount
              currencyCode
            }
          }
          totalTaxSet {
            shopMoney {
              amount
              currencyCode
            }
          }
          shippingAddress {
            firstName
            lastName
            address1
            address2
            city
            province
            zip
            country
          }
          billingAddress {
            firstName
            lastName
            address1
            address2
            city
            province
            zip
            country
          }
          customAttributes {
            key
            value
          }
        }
      }
    }
  }
`;

我想查询metafields或ANYTHING,但它似乎不支持它。我不确定我是否只有错误的查询语法或者它是否不受支持。 shopify搜索语法文档并没有真正帮助,这是我对graphql的知识分崩离析的地方。

是否可以在graphql中执行此操作?我还尝试添加其设置不支持的metafields(id:$ whateverID)。

graphql shopify
2个回答
1
投票

很遗憾,Shopify不支持metafields上的查询过滤器。解决这个问题的最好方法是使用像GraphiQL这样的graphql explorer。如果您转到Apps> Shopify GraphiQL App,Shopify仪表板会内置此功能。

使用GraphiQL,您可以看到:

  1. 客户查询没有支持元字段:customers query
  2. 订单查询没有支持客户或元数据:orders query
  3. 客户的metafields没有查询参数:metafields params

我认为您的选择是根据您的要求进行查询,并在获得结果后过滤或使用客户标记和按标签查询。


0
投票

你可以通过简化事情来帮助你解决问题。我给你的建议是尝试一个简单的查询。你能收到订单吗?由于订单有客户(通常但不总是),您是否可以获得与该客户关联的元数据?

在试图展示你想要做的事情时,你有很多障碍,几乎就像你想要一个偏头痛试图调试任何事情一样。从GraphQL网站的角度来看,对端点的GraphQL调用已经很好地记录了,而Shopify只不过是一个真实的实现,但需要注意的是它们会根据复杂性向您收取调用,因此您最好监控您的信用。

所以,你试试简单的电话。获得产品,它是Metafields。获取客户记录,它是Metafields。如果你能做到这一点,那么你不会对文档提出太多挑战,也不会对GraphQL查询的概念提出质疑。一旦基本全部工作,你可以在变量,游标,分页等工作...但是直到一次性调用给你你想要的,调试应该集中在最简单的调用,而不是一切和厨房水槽。

此外,当你搞砸一个到端点的呼叫时,Shopify通常会返回一个响应,其中包含你搞砸的地方的详细信息,为你提供第一个看的地方。我们没有看到您的回复,所以没有什么可以继续帮助您。

© www.soinside.com 2019 - 2024. All rights reserved.