将graphQL片段添加到架构,并且可用于所有查询

Ada*_*kis 13 javascript graphql graphql-js

以下在graphiQL中正确执行

fragment BookGridFields on Book {
  _id
  title
}

{
  allBooks {
    ...BookGridFields
  }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,可以在我的架构中指定片段,就在我的Book类型定义的下面,就像这样

type Book {
  _id: String
  title: String
  pages: Int
  weight: Float
  authors: [Author]
}

fragment BookGridFields on Book {
  _id
  title
}
Run Code Online (Sandbox Code Playgroud)

所以我可以像这样运行查询

{
  allBooks {
    ...BookGridFields
  }
}
Run Code Online (Sandbox Code Playgroud)

无需将片段定义为我的查询的一部分.

目前上述错误有

未知片段\"BookGridFields \"

eri*_*our 8

根据graphql文档,我看到片段是查询api的一部分,而不是用于设置模式的有效语法.这使我得出结论,目前无法在模式中指定片段.

https://graphql.org/learn/queries/#fragments

  • 这使得定义接口变得非常非常愚蠢。 (5认同)
  • @jberryman我认为BenjaminR意味着接口实现中存在不必要的冗余(必须在接口和实现类型中指定字段,这首先减少了使用接口的价值。)我使用Dgraph并注意到它们允许在其实现类型中不重复接口字段的模式,这真的很棒。 (2认同)