GraphQL: можно ли искать во вложенном поле? - PullRequest
0 голосов
/ 09 ноября 2018

Я специально использую API-интерфейс shopify graphql для запроса заказов.

Я хочу выполнить поиск по вложенному связанному полю.

Ниже мой запрос.

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
          }
        }
      }
    }
  }
`;

Я хочу на самом деле запросить метаполя или НИЧЕГО, но не похоже, что он поддерживается. Я не уверен, что у меня неправильный синтаксис запроса или он не поддерживается. Документация синтаксиса поиска shopify не очень помогает, и здесь мои знания о графике расходятся.

Возможно ли это сделать в graphql? Я также попытался добавить метаполя (id: $ whatID), который не поддерживается их настройкой.

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

К сожалению, Shopify не поддерживает фильтры запросов на metafields. Лучший способ понять это - использовать проводник graphql, например GraphiQL . В панель инструментов Shopify это встроено, если вы идете в Приложения> Shopify GraphiQL App.

Используя GraphiQL, вы можете видеть, что:

  1. В запросе клиентов не поддерживаются метаполя: customers query
  2. Запрос заказов не поддерживает клиентов или метаполя: orders query
  3. А у метаполей у клиентов нет параметра запроса: metafields params

Я думаю, что вы можете либо запросить то, что вы можете, и отфильтровать после получения результатов, либо использовать тег клиента и запросить тег.

0 голосов
/ 09 ноября 2018

Вы бы действительно помогли своему делу, упрощая вещи. Мой вам совет - попробуйте простой запрос. Вы можете получить заказ? Поскольку заказ есть у клиента (обычно, но не всегда), можете ли вы связать метаполе с этим клиентом?

У вас так много препятствий на пути к тому, чтобы показать, что вы пытаетесь сделать, это почти как если бы вы хотели мигрени, пытаясь что-то отладить. Вызовы GraphQL к конечным точкам довольно хорошо документированы с точки зрения веб-сайта GraphQL, и Shopify - не что иное, как полная реализация этого, с оговоркой, что они взимают плату за вызовы в зависимости от сложности, поэтому вам лучше следить за своими кредитами.

Итак, попробуйте простые звонки. Получить продукт и это Метаполя. Получите запись клиента, и это - Метаполя. Если вы можете это сделать, вы не слишком много оспариваете ни в документации, ни в концепции запросов GraphQL. Как только базовое все сработает, вы можете работать с переменными, курсорами, пейджингом и т. Д., Но до тех пор, пока одноразовый вызов не даст вам то, что вы хотите, отладка должна быть сосредоточена на самых простых вызовах, а не на всех и кухонной раковине.

Кроме того, когда вы вводите вызов в конечную точку, Shopify обычно возвращает ответ с подробной информацией о том, где вы облажались, предоставляя вам первое место для поиска. Мы ничего не видим в вашем ответе, поэтому вам нечем помочь.

...