2017-09-29 6 views
0

검색 키워드를 기반으로 Shopify 제품을 가져 오려고합니다. Graphql 쿼리 오류! 변수가 선언되었지만 사용되지 않았습니다.

나는 잘 작동 쿼리에서 하드 코드 된 값을 전달하여이 쿼리를 테스트하지만 난 그게

Grapghql 쿼리 오류 searchKeyword가 선언되었지만 사용되지 않는다는 오류를 제공하는 경우 있도록 변수 값을 전달해야 .

여기 title, tagproduct_type을 기준으로 제품을 검색하는 내 쿼리입니다.

실패한 경우 :

export const searchProductsQuery = gql` query($searchKeyword: String!){ 
    shop { 
     products(first: 10, query:"title:'$searchKeyword' OR tag:'$searchKeyword' OR product_type:'$searchKeyword'") { 
      edges { 
       cursor 
       node { 
        id 
        title 
        handle 
        description 
        productType 
        images(first: 5) { 
         edges { 
          node { 
           id 
           src 
          } 
         } 
        } 
        variants(first: 5) { 
         edges { 
          node { 
           id 
           title 
           price 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
}`; 

성공 사례 :

export const searchProductsQuery = gql` query{ 
shop { 
    products(first: 10, query:"title:'games' OR tag:'games' OR product_type:'games'") { 
    ... 
}; 

답변

0

당신이 당신의 작업에 정의하는 변수는 단지입니다 - 변수. 템플릿 리터럴 자리 표시 자처럼 사용할 수 없습니다.

GraphQL에서 변수는 인수의 입력으로 만 사용할 수 있습니다. 예를 들어 query은 (null이 아닌) String을 취하는 인수입니다. 그래서, 우리는 "title:'games' OR tag:'games' OR product_type:'games'"로 설정하고 다음과 같이 사용, $mySearchQuery 같은 변수를 만들 수 있습니다 : 당신은 당신이 $mySearchQuery의 일부로 사용하고자하는 자바 스크립트 변수가있는 경우

products(query:$mySearchQuery) 

, 당신은 값을 설정 할 수 있습니다 - 귀하의 요청에 내부 그에 대한 참조의 일부

const options = { 
    variables: { 
    mySearchQuery: `title:'${keyword}' OR tag:'${keyword}' OR product_type:'${keyword}'` 
    } 
} 

당신은 당신의 변수가 선언 결코 그것이하지 않기 때문에 사용 된 오류가 표시됩니다 문자 템플릿을 사용하여 자바 스크립트 코드 내부에 $mySearchQuery 위해 안으로 통과 문자열이므로 파싱됩니다.

+0

감사합니다. Daniel이 내 문제를 해결했으며 쿼리가 작동 중입니다. –