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

Given a graphql.js schema, how can I find all the variants of a particular union type?

假设我有一个这样构建的 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 = ?

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

获取有问题的抽象类型(接口或联合):

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

然后得到它可能的类型:

const possibleTypes = schema.getPossibleTypes(searchResultType);

possibleTypes 将是 GraphQLObjectType 个对象的数组。

您还可以使用 isPossibleType.

测试特定类型是否是抽象类型的可能类型