2017-07-28 5 views
0

Wir verwenden graphql für unser Projekt und verwenden graphql-java 2.3.0 (wir planen eine Aktualisierung, aber das ist momentan nicht möglich).Wie setze ich null auf ein Feld in graphql?

Ich versuche, eine solche Mutation auszuführen:

mutation { 
    UPDATE_User(

     id:3, 
     type: null 
    ) {id} 
    } 

Antwort:

{ 
    "errors": [ 
    { 
     "validationErrorType": "WrongType", 
     "message": "Validation error of type WrongType: argument value EnumValue{name='null'} has wrong type", 
     "locations": [ 
     { 
      "line": 5, 
      "column": 7 
     } 
     ], 
     "errorType": "ValidationError" 
    } 
    ], 
    "data": null 
} 

Antwort

1

Null Schlüsselwort ist eine relativ neue Ergänzung der GraphQL spec und die graphql-Java-Version Sie sind Verwendung hat es noch nicht implementiert. In der Tat, sogar 3.0.0 hat es immer noch nicht. Die Version 4.0, die demnächst veröffentlicht wird, unterstützt das Schlüsselwort null.
Und der Grund, warum es als eine Enumeration behandelt wird, ist, weil nicht in Anführungszeichen gesetzte Zeichenfolgen Enums sind, null die einzige Ausnahme ist. Dies wird auch in this issue erläutert.

+0

ich sehe. Vielen Dank. Aber was ist die empfohlene Problemumgehung? Ich denke nicht, dass null bis jetzt von graphql-Benutzern nicht benutzt wurde. –

+0

@Don_Quijote Null wurde erst vor Monaten hinzugefügt. Zuvor war alles, was Sie tun konnten, überhaupt nicht "type" zu senden, aber dann können Sie _update nicht in null_ und _leave unveränderte_ Fälle unterscheiden. Wenn dies für Sie wichtig ist, müssen Sie einen speziellen Markerwert auf "type" setzen, z. 'type:" NONE "' und handle das entsprechend im Backend. – kaqqao

0

In Ihrem Schema, ist 'Typ' Parameter erforderlich?

Wenn nicht, dann einfach weglassen! In Ihrem Backend, wenn Sie den Wert type abrufen, dann wird es null

Verwandte Themen