2017-09-29 1 views
0

Ich versuche, Shopify-Produkte auf der Basis von Such-Keyword zu holen.Graphql Abfragefehler! Variable wird deklariert, aber nie verwendet

testete ich diese Abfrage durch sie arbeitet hart codierten Wert in der Abfrage vorbei in Ordnung, aber ich brauche Variablenwert übergeben, damit in diesem Fall, dass ein Fehler gibt

Grapghql Abfrage Fehlersuchesuchwort deklariert, aber nicht verwendet .

Hier ist meine Abfrage Produkte auf der Basis von title, tag und product_type zu suchen.

Erfolglos Fall:

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

Erfolgreiche Fall:

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

Antwort

0

Die Variablen, die Sie für Ihren Betrieb definieren, sind genau das - Variablen. Sie können nicht wie ein Vorlage-Literal-Platzhalter verwendet werden, was Sie auch tun möchten.

In GraphQL können Variablen nur als Eingabe für ein Argument verwendet werden. Beispiel: query ist ein Argument, das einen String (nicht null) akzeptiert. So können wir eine Variable wie $mySearchQuery, setzen Sie ihn auf "title:'games' OR tag:'games' OR product_type:'games'" erstellen und verwenden Sie dann wie folgt aus:

products(query:$mySearchQuery) 

Wenn Sie eine Javascript-Variable, die Sie als Teil $mySearchQuery verwenden möchten, können Sie den Wert legen Sie Pass in für $mySearchQuery in Ihrem JavaScript-Code durch eine Vorlage mit wörtlicher:

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

Du einen Fehler zu sehen, dass Ihre Variable deklariert wurde und nie verwendet, weil es nie war - die Verweise auf sie in Ihrem Abfrageteil sind von eine Zeichenkette und daher buchstäblich geparst werden.

+0

Dank Daniel Ihre Antwort löste mein Problem, Abfrage funktioniert jetzt. –

Verwandte Themen