2017-09-29 15 views
0

検索キーワードに基づいてShopify製品を取得しようとしています。 Graphqlクエリエラー!変数は宣言されていますが使用されていません

は、私はそれが正常に動作クエリでハードコーディングされた値を渡すことによって、このクエリをテストしたが、私はそれが

GrapghqlクエリエラーsearchKeywordが宣言さが、使用されていないというエラーになりますその場合のように、変数の値を渡す必要があります。ここで

titletagproduct_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の一部として使用するjavascriptの変数を持っている場合は

products(query:$mySearchQuery) 

は、あなたが値を設定することができます - クエリ内のそれへの参照がの一部である

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

あなたの変数が宣言されていないと決してそれがあったことはありませんので、使用されたエラーが表示されます:リテラルのテンプレートを使用して、JavaScriptコード内$mySearchQueryのために渡します文字列であるため、文字通りに解析されます。

+0

ダニエルあなたの答えは私の問題を解決した、クエリは現在動作しています。 –

関連する問題