how - ¿Cuál es el punto de tipo de entrada en GraphQl?
graphql>; (1)
¿Podría explicar por qué si el argumento de entrada de mutación es un objeto debería ser un tipo de entrada ? Creo que es mucho más simple simplemente reutilizar el tipo sin proporcionar id.
Por ejemplo:
type Sample {
id: String
name: String
}
input SampleInput {
name: String
}
type RootMutation {
addSample(sample: Sample): Sample # <-- instead of it should be
addSample(sample: SampleInput): Sample
}
Está bien para objetos pequeños, pero cuando tienes muchos objetos con más de 10 propiedades en el esquema, eso se convertirá en una carga.
El comentario de Jesse es correcto. Para una respuesta más formal, aquí está el extracto de la documentación de GraphQL sobre los tipos de entrada :
El tipo de Objeto definido anteriormente no es apropiado para su reutilización aquí, porque los Objetos pueden contener campos que expresan referencias circulares o referencias a interfaces y uniones, ninguna de las cuales es apropiada para usarse como argumento de entrada. Por esta razón, los objetos de entrada tienen un tipo separado en el sistema.
ACTUALIZAR
Desde que lo publiqué, encontré que las referencias circulares en realidad son aceptables, siempre y cuando sean nilables (o de lo contrario declararía una cadena infinita). Pero, todavía hay otras limitaciones (por ejemplo, interfaces) que parecen necesitar un sistema de tipo separado para las entradas.