Регистрация DataFetchers для типов, которые реализуют интерфейс - PullRequest
0 голосов
/ 11 апреля 2019

Я создал схему GraphQL с типами интерфейса, как показано ниже (показаны только соответствующие части):

type Query {

   getAllVehicles(): [Vehicle!]

}

interface Vehicle {
    id: Int!
    type: String!
}

type Truck implements Vehicle {
    id: Int!
    type: String!
}

Когда клиент запрашивает схему, например:

getAllVehicles() {
      ... on Truck {
               id 
               type
      }

}

В моем Java-коде я зарегистрировал распознаватель типов, который возвращает правильный объект на основе типа Vehicle:

 .type(newTypeWiring("Vehicle")
    .typeResolver(new TypeResolver() {
      @Override
      public GraphQLObjectType getType(TypeResolutionEnvironment env) {
        Object javaObject = env.getObject();
         if (javaObject instanceof Truck) {
          return env.getSchema().getObjectType("Truck");
          } else {
          return env.getSchema().getObjectType("Car");
          }
        }
    }))

Но когда вызывается DataFetcher для корневого запроса для getAllvehicles (), как я могу определить, какой тип транспортного средства (грузовика) был запрошен?

...