我创建了一个具有以下接口类型的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(卡车)?