web-dev-qa-db-fra.com

Une requête ou une mutation graphql peut-elle renvoyer une valeur scalaire

Syntaxiquement, vous pouvez définir une requête ou une mutation dans le schéma de telle sorte qu'elle renvoie un type. Cependant, une définition d'opération (c'est-à-dire une requête ou une mutation invoquée par un client) doit avoir un SelectionSet, donc je dois faire:

mutation X { field }

Le résultat de ma mutation ou requête doit donc être un objet avec des champs, il ne peut pas être un scalaire. Est-ce correct? J'ai l'impression que je devrais être capable de renvoyer un scalaire. Le résultat est toujours enveloppé dans une enveloppe lors de l'envoi via HTTP, donc le résultat serait un JSON valide dans les deux cas (un simple scalaire n'est pas strictement JSON valide).

Ma lecture est-elle correcte?

7
Tom Quarendon

Vous pouvez en fait retourner un scalaire, comme Boolean ou String

type Mutation {
  hello(who: String!): String
}

L'émission de cette requête

mutation foo {
  hello("peter")
}

le résultat ressemblerait à ceci

data.hello // string

Testé avec graphql-yoga + graphql-aire de jeux:

schema from playgroundresult from playground

12
lipp