2017-12-20 40 views
0

shopify Graphql APIから注文リストを取得するにはどうすればよいですか?私は単一の注文を得る方法を見つけることさえできません。Shopify Graphqlで注文リストを取得

query{ 
    node(id:$id){ 
    __typename 
    ... on Order{ 
     id 
     email 
    } 
    } 
} 

$idは、ドキュメントによると、「グローバル識別をサポートするためのIDを持つオブジェクト」ですが、そのことが何を意味するかクリアしていない場合は:私が言うことができる最寄りのは、私のクエリは次のようになりますということです。

Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0Lzk4OTUyODE0NzU=

あなたは、このようなノードのインタフェースを使用して製品を照会することができますし、このように、ハッシュを返します

shop { 
    productByHandle(handle: "red-bicycle") { 
     id 
    } 
    } 

:製品について、あなたはそうのようなIDを取得することができます:

node(id: "Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0Lzk4OTUyODE0NzU=") { 
    id 
    ... on Product { 
     title 
    } 
    } 

これは注文に対してどのように行われますか?最新の5つの注文のリストは?なぜNodeインターフェイスをまったく使用しなければならないのですか?ハッシュを使用する代わりに、ハンドルやIDなどで照会するのはなぜですか?

答えて

0

私は、電子メールに関連した注文を取り出すために、Graphify shopify apisを使用してプロジェクトを作成しました。 customers/search.jsonを顧客の電子メールで使用して顧客IDを取得し、次にorders.jsonを使用してその顧客IDに関連するすべての注文リストを取得します。

https://help.shopify.com/api/reference/order

+0

GraphQL APIを使用して、特定の日付範囲内で注文された商品に関するデータを取得する必要があります。これは、graphQLが解決しようとしているREST APIリクエストが非常に多く必要です。 orders.json RESTエンドポイントを使用し、結果から任意の順序IDを '$ id'引数として選択すると、引き続き「引数 'id'がフィールド 'ノード'に無効な値を持っています。 ' – hamncheez

+0

GraphifyはREST要求を超えてAPIエンドポイントへの呼び出しを改善するように設計されているだけで、Shopify(または任意のプロバイダ)が成熟した実装を備えているわけではありません。 Shopifyは何らかのGraphQLアクセスを提供しようと努力しましたが、明らかに終了していません。期待どおりに動作しないクエリを実行すると、驚くことはありません。 GraphQLは生産準備ができていると誰も言わなかったのですが、あなた自身の責任でそれを使って原因を突き止めることができます。 –

+0

私はDavid Lazarに同意します。そのため、注文を取得するために古いshopify apisを使用していたのです。 –

0

あなたは

let query = Storefront.buildQuery { $0 
      .customer(customerAccessToken: token) { $0 
       .orders(first: 20) { $0 
        .edges { $0 
         .node { $0 
          .id() 
          .orderNumber() 
          .totalPrice() 
          .currencyCode() 
          .customerLocale() 
          .customerUrl() 
          .email() 
          .phone() 
          .processedAt() 
          .subtotalPrice() 
          .totalRefunded() 
          .totalShippingPrice() 
          .totalTax() 
          .shippingAddress({ $0 
           .address1() 
           .address2() 
           .city() 
           .company() 
           .country() 
           .countryCode() 
           .firstName() 
           .formatted() 
           .formattedArea() 
           .lastName() 
           .latitude() 
           .longitude() 
           .name() 
           .phone() 
           .province() 
           .provinceCode() 
           .zip() 
          }) 
          .lineItems(first: 50) { $0 
           .edges { $0 
            .cursor() 
            .node { $0 
             .quantity() 
             .title() 
             .variant{ $0 
              .id() 
              .image({ $0 
               .altText() 
               .id() 
               .src() 
              }) 
              .price() 
              .sku() 
             } 
             .customAttributes{ $0 
              .key() 
              .value() 
             } 

            } 
           } 
          } 
         } 
        } 
       } 
      } 
     } 

にiOS版では、このクエリ戻り、ユーザの注文リストをユーザーの注文のリストを取得するために、うまくいけば、それはあなたのための作業になります。このクエリを使用することができます。

+0

ありがとうございます。しかし、単一の顧客だけでなく、指定した期間にすべての注文が必要です。私は実際にコレクションによる販売を追跡する必要がありますが、REST APIを使用すると、日付範囲内のすべての注文を取得し、各注文のラインアイテムをループし、取得する各ラインアイテムに対して個別のGETリクエストを作成する必要がありますそのコレクションはAPIリクエストの制限にすぐに当たる – hamncheez

関連する問題