给定一个graphql.js模式,如何找到特定联合类型的所有变体?

时间:2020-08-20 16:47:43

标签: graphql graphql-js

假设我有一个像这样构建的graphQL模式:

var { buildSchema } = require('graphql');

// Construct a schema, using GraphQL schema language
var schema = buildSchema(`
  type Human = // some object type
  type Droid = // another object type
  union SearchResult = Human | Droid
  type Query {
    result: SearchResult
  }
`);

const searchResultVariants = ?

现在,我正在寻找一种方法,以编程方式在给定的SearchResult的同一程序中找出schema类型的所有变体,有没有办法?谢谢

1 个答案:

答案 0 :(得分:1)

获取相关的抽象类型(接口或联合):

const searchResultType = schema.getType('SearchResult');

然后获取其可能的类型:

const possibleTypes = schema.getPossibleTypes(searchResultType);

possibleTypes将包含GraphQLObjectType个对象的数组。

您还可以使用isPossibleType测试特定类型是否是抽象类型的可能类型。