2017-09-29 2 views
0

J'essaie d'aller chercher les produits Shopify sur la base du mot-clé de recherche.Erreur de requête Graphql! la variable est déclarée mais jamais utilisée

J'ai testé cette requête en passant valeur codée en dur dans la requête, il fonctionne très bien mais je dois passer la valeur variable de sorte dans ce cas, il donne une erreur qui

erreur de requête Grapghql RechercheMot est déclarée mais non utilisée .

Voici ma requête pour rechercher des produits sur la base de title, tag et product_type.

cas Unsuccessful:

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 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
}`; 

cas avec succès:

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

Répondre

0

Les variables que vous définissez pour votre opération ne sont que - les variables. Ils ne peuvent pas être utilisés comme un espace réservé littéral de modèle, ce que vous essayez de faire.

En GraphQL, les variables ne peuvent être utilisées qu'en entrée pour un argument. Par exemple, query est un argument qui prend une chaîne (non nulle). Ainsi, nous pouvons créer une variable comme $mySearchQuery, réglez-le sur "title:'games' OR tag:'games' OR product_type:'games'" puis l'utiliser comme ceci:

products(query:$mySearchQuery) 

Si vous avez une variable javascript que vous souhaitez utiliser dans le cadre de $mySearchQuery, vous pouvez définir la valeur passer pour $mySearchQuery l'intérieur de votre code javascript en utilisant un modèle littéral:

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

Vous voyez une erreur que votre variable a été déclarée et n'a jamais utilisé parce qu'il n'a jamais été - les références à l'intérieur de votre requête font partie de une chaîne et donc sont analysés littéralement.

+0

Merci Daniel votre réponse a résolu mon problème, la requête fonctionne maintenant. –