查询所有类型的片段

时间:2020-04-02 09:21:41

标签: json graphql

是否可以查询所有类型的字段。

示例

{
  allPosts {
    ... on PostType {
      title
    }
    ... on Post2Type {
      title
    }
  }
}

将有两个以上的PostType,所以我想得到的是这个。 AllPostTypes是所有合并的PostType。

{
  allPosts {
    ... on AllPostTypes {
      title
    }
  }
}

这甚至可能吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

是的,假设您的模式如下:

type Query {
  allPosts: [AllPostTypes!]!
}

interface AllPostTypes {
  title: String!
}

一个接口定义一个或多个实现类型的字段也必须定义。因此,实现AllPostTypes的类型还必须定义一个title字段。如果您有一个返回AllPostTypes的字段,我们可以使用AllPostTypes作为on的条件来请求任何此类公共字段:

{
  allPosts {
    ... on AllPostTypes {
      title
    }
  }
}

但是,此处散布的片段是不必要的。因为这些字段是allPosts返回的任何对象所共有的,所以我们可以这样写:

{
  allPosts {
    title
  }
}

仍然需要使用片段扩展来添加特定于特定实现类型的任何字段,

{
  allPosts {
    title
    ... on Post2Type {
      someOtherField
    }
  }
}