2015-09-18 13 views
7

Ich versuche eine einfache Mutation mit GraphQL mit der GraphiQL-Schnittstelle zu machen. Meine Mutation sieht wie folgt aus:GraphQL-Mutationsvariablen

mutation M($name: String) { 
    addGroup(name:$name) { 
    id, 
    name 
    } 
} 

mit Variablen:

{ 
    "name": "ben" 
} 

Aber es gibt mir den Fehler: Variable $name of type "String" used in position expecting type "String!"

Wenn ich meine Mutation mutation M($name: String = "default") es wie erwartet funktioniert ändern. Das sieht so aus, als ob es mit dem Typsystem zusammenhängt, aber ich kann nicht herausfinden, was das Problem ist.

Antwort

6

Sie haben den Eingabe-Namen wahrscheinlich als eine Nicht-Null-Zeichenfolge definiert (etwas Link type: new GraphQLNonNull(GraphQLString), wenn Sie js server verwenden, oder String! im einfachen GraphQL).

Also Ihre Eingabe in der Mutation muss übereinstimmen, was bedeutet, dass auch eine Nicht-Null-Zeichenfolge muss. Wenn Sie auf den folgende ändern, sollte funktionieren:

mutation M($name: String!) { 
    addGroup(name:$name) { 
    id, 
    name 
    } 
} 

Auch wenn Sie einen Standardwert definieren, wie Sie da es tun, sind Sie eine nicht leere Zeichenfolge.

Schließlich könnten Sie die Anforderung, eine Nicht-Null auf dem Server zu sein, fallen lassen.

0

denke ich in dir addGroup() Mutation die args für Name des Typs ist String! die new GraphQLNonNull(GraphQLString) aber in Ihrer Mutation ist, dass Sie als String angeben, die mit dem Typ-System in Konflikt steht.