将DataFetchers注册到实现接口的类型

时间:2019-04-11 14:56:19

标签: java graphql graphql-java

我创建了一个具有以下接口类型的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(),如何确定查询的是哪种类型的Vehicle(卡车)?

0 个答案:

没有答案