如何在GraphQL中返回具有联合查询结果的对象类型?

如何在GraphQL中返回具有联合查询结果的对象类型?,graphql,graphql-ruby,Graphql,Graphql Ruby,我正在构建一个GraphQLAPI。返回联合/接口类型字段时,是否可以让服务器告诉我对象类型?i、 像这样的 { search(text: "an") { ... on Human { __type name height } ... on Droid { __type name primaryFunction } ... on Starship { name

我正在构建一个GraphQLAPI。返回联合/接口类型字段时,是否可以让服务器告诉我对象类型?i、 像这样的

{
  search(text: "an") {
    ... on Human {
      __type
      name
      height
    }
    ... on Droid {
      __type
      name
      primaryFunction
    }
    ... on Starship {
      name
      length
    }
  }
}

// or even better

 {
  search(text: "an") {
    __type // <--- even though it's a Union query, everything has a type right? :/

    ... on Human {
      name
      height
    }
    ... on Droid {
      name
      primaryFunction
    }
    ... on Starship {
      name
      length
    }
  }
}

显然,我可以根据需要通过向对象添加“类型”字段来手动添加此功能,但我想GraphQL中已经内置了类似的内容?因为所有对象都已具有名称。基本上,我正在尝试作为普通查询的一部分访问内省信息。

这可以使用特殊的元字段
\uu typename
,该字段可用于所有Graphql对象,并返回对象的Graphql类型名称。有关更多信息,请参阅

PS:看起来
\uuu typename
是唯一一个可以在内省查询之外调用的元字段

用法如下:

{
  search(text: "an") {
    __typename
    ... on Human {
      name
    }
    ... on Droid {
      name
    }
    ... on Starship {
      name
    }
  }
}

这可以使用特殊的元字段
\uuu typename
,该字段可用于所有Graphql对象,并返回对象的Graphql类型名称。有关更多信息,请参阅

PS:看起来
\uuu typename
是唯一一个可以在内省查询之外调用的元字段

用法如下:

{
  search(text: "an") {
    __typename
    ... on Human {
      name
    }
    ... on Droid {
      name
    }
    ... on Starship {
      name
    }
  }
}