2015-09-18 16 views
7

Próbuję wykonać prostą mutację za pomocą GraphQL z interfejsem GraphiQL. Moja mutacja wygląda następująco:Zmienne mutacji GraphQL

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

ze zmiennymi:

{ 
    "name": "ben" 
} 

Ale to daje mi błąd: Variable $name of type "String" used in position expecting type "String!"

Jeśli zmienię mojego mutację mutation M($name: String = "default") to działa zgodnie z oczekiwaniami. Wygląda na to, że jest to związane z systemem typu, ale nie potrafię zrozumieć, na czym polega problem.

Odpowiedz

6

Prawdopodobnie zdefiniowałeś nazwę wejściową jako niepustą ciąg znaków (link do czegoś type: new GraphQLNonNull(GraphQLString), jeśli używasz serwera js lub String! w zwykłym GraphQL).

Twoje dane wejściowe w mutacji muszą być zgodne, co oznacza, że ​​musi również być łańcuchem niepustym. Jeśli zmieni się poniżej, powinno działać:

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

Także jeśli określić wartość domyślną, jak ty, ponieważ można być non łańcuchem pustym.

Wreszcie, można zrezygnować z wymogu bycia non-null na serwerze.

0

myślę w was addGroup() mutację args do nazwy jest typu String! czyli new GraphQLNonNull(GraphQLString) ale w swojej mutacji można określić jako String, który jest niezgodny z systemem typu.