2017-12-20 38 views
0

를 조회하지만 난 오류 등을 얻고있어 'node'필드의 'id'인수가 잘못되었습니다. 예상 유형 'ID!'.안드로이드 shopify GET 제품 정보는 오류

너무 다른 코드를 시도했지만 사전에

 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 
      .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를 얻을 - - 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를 사용을

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를 사용하여 귀하의 코드입니다.