Me encontré con un problema en el que el cliente de Apollo y el área de juegos de GQL devolvían datos diferentes con exactamente la misma consulta. El esquema se parece a esto:
interface A { age: Int! } interface B implements A { age: Int! name: String! } type SomeType implements A & B { ... } type Query { hello: A } El servidor devuelve un tipo concreto SomeType , que implementa tanto la interfaz A como B
La consulta:
{ hello { age ... on B { name } } } (La única diferencia que se me ocurre es que cuando se usa el cliente Apollo, la consulta se analiza con la graphl-tag ). En el área de juegos de GQL, la consulta devuelve el resultado esperado. Algo como:
{ "__typename": "someType", "age": 10, "name": "someName" }Sin embargo, cuando ejecuto esta consulta con el cliente Apollo, obtengo:
{ "__typename": "someType", "age": 10, }Parece que la consulta está definida para devolver el tipo A
type Query { hello: A } Entonces, obtener solo los campos definidos en A parece correcto. Quizás deberías cambiar el esquema a algo como:
type Query { hello: SomeType }