2017-12-20 34 views
0

私はアンドロイドshopify GET商品詳細クエリエラー

ID id = new ID(productId); 
 
     Storefront.QueryRootQuery query = Storefront.query(rootQueryBuilder -> 
 
       rootQueryBuilder 
 
         .node(id, nodeQuery -> 
 
           nodeQuery 
 
             .onProduct(productQuery -> 
 
               productQuery 
 
                 .title() 
 
               .description() 
 
     ) 
 
    ) 
 
); 
 
     QueryGraphCall call = App.graphClient().queryGraph(query); 
 
     call.enqueue(new GraphCall.Callback<Storefront.QueryRoot>() { 
 
      @Override 
 
      public void onResponse(@NonNull GraphResponse<Storefront.QueryRoot> response) { 
 

 
      } 
 

 
      @Override 
 
      public void onFailure(@NonNull GraphError error) { 
 

 
      } 
 
     }); 
 

 
    }

下記のコードを使用してShopifyアンドロイドにidで、製品の詳細を取得しようとしていますが、私はのようなエラーを取得していますよフィールド 'node'の引数 'id'に無効な値があります。予想されるタイプ 'ID!'

私も別のコードを試してみましたが、事前に

 Storefront.ProductQueryDefinition query = q -> q 
 
       .title() 
 
       .descriptionHtml() 
 
       .tags() 
 
       .images(args -> args.first(250), imageConnection -> imageConnection 
 
         .edges(imageEdge -> imageEdge 
 
           .node(Storefront.ImageQuery::src) 
 
         ) 
 
       ) 
 
       .options(option -> option 
 
         .name() 
 
         .values() 
 
       ) 
 
       .variants(args -> args.first(250), variantConnection -> variantConnection 
 
         .edges(variantEdge -> variantEdge 
 
           .node(variant -> variant 
 
             .title() 
 
             .availableForSale() 
 
             .selectedOptions(selectedOption -> selectedOption 
 
               .name() 
 
               .value() 
 
             ) 
 
             .price() 
 
           ) 
 
         ) 
 
       ); 
 
     GraphCall<Storefront.QueryRoot> call = App.graphClient().queryGraph(Storefront.query(
 
       root -> root 
 
         .node(new ID(productId), node -> node 
 
           .onProduct(query) 
 
         ) 
 
       ) 
 
     );

おかげで同じエラーを取得しています。

+0

productIdでどのような値を入力していますか? –

+0

は次のようになります。Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0LzI3ODA1MzI4OTk5NQ == –

答えて

0

フィールド 'node'の引数 'id'は無効な値です。予想されるタイプ 'ID!'

このエラーは、正しいproductIDを入力していないときに発生します。 これを試してみてください - コレクションを取得 - Storefront.QueryRootQuery query = Storefront.query(rootQuery -> rootQuery .shop(shopQuery -> shopQuery .collections(arg -> arg.first(30), collectionConnectionQuery -> collectionConnectionQuery .edges(collectionEdgeQuery -> collectionEdgeQuery .node(collectionQuery -> collectionQuery .title() .image(imageConnectionQuery -> imageConnectionQuery .src() ) ) ) ) ) );

今、このコレクションの製品を取得するために、コレクションIDを使用する -

Storefront.QueryRootQuery query = Storefront.query(rootQuery -> rootQuery 
      .node(new ID(collectionID), nodeQuery -> nodeQuery 
        .onCollection(collectionQuery -> collectionQuery 
          .products(
            args -> args 
              .first(30), 
            productConnectionQuery -> productConnectionQuery 
              .pageInfo(pageInfoQuery -> pageInfoQuery 
                .hasNextPage() 
              ) 
              .edges(productEdgeQuery -> productEdgeQuery 
                .cursor() 
                .node(productQuery -> productQuery 
                  .title() 
                  .productType() 
                  .description() 
                  .images(arg -> arg.first(10), imageConnectionQuery -> imageConnectionQuery 
                    .edges(imageEdgeQuery -> imageEdgeQuery 
                      .node(imageQuery -> imageQuery 
                        .src() 
                      ) 
                    ) 
                  ) 
                  .variants(arg -> arg.first(10), variantConnectionQuery -> variantConnectionQuery 
                    .edges(variantEdgeQuery -> variantEdgeQuery 
                      .node(productVariantQuery -> productVariantQuery 
                        .price() 
                        .compareAtPrice() 
                        .title() 
                        .available() 
                      ) 
                    ) 
                  ) 
                ) 
              ) 
          ) 
        ) 
      ) 
    ); 

応答からすべての製品IDを取得 -

graphClient.queryGraph(query).enqueue(new GraphCall.Callback<Storefront.QueryRoot>() { 

     @Override public void onResponse(@NonNull GraphResponse<Storefront.QueryRoot> response) { 
      progress.dismiss(); 
      Storefront.Collection collection = (Storefront.Collection) response.data().getNode(); 
      boolean hasNextProductPage = collection.getProducts().getPageInfo().getHasNextPage(); 
      ArrayList products = new ArrayList<>(); 
      String productID = new String[products.size()]; 
      for (Storefront.ProductEdge productEdge : collection.getProducts().getEdges()) { 
       String productPageCursor = productEdge.getCursor(); 
       products.add(productEdge.getNode()); 
      } 
     for(int count=0;count<products.size();count++){ 
     productID[count] = products.get(count).getId().toString(); 
     } 

     @Override 
     public void onFailure(@NonNull GraphError error) { 

     } 
    }); 

は、これらの製品IDを使用しますあなたのコードで。

関連する問題