Graphql UndefinedFragment类型的验证错误:Undefined fragment
我有一个graphql jave v8.0应用程序在Spring boot v1.5.10上运行,我正试图利用graphql的特性获取有限数量的字段,其模式类型定义如下:Graphql UndefinedFragment类型的验证错误:Undefined fragment,graphql,graphql-java,Graphql,Graphql Java,我有一个graphql jave v8.0应用程序在Spring boot v1.5.10上运行,我正试图利用graphql的特性获取有限数量的字段,其模式类型定义如下: type School { id: ID name: String address: String age: String jobTitle: String ... } fragment UserFields on School { age jobTitle } type
type School {
id: ID
name: String
address: String
age: String
jobTitle: String
...
}
fragment UserFields on School {
age
jobTitle
}
type Query {
user (id: String!): School!
}
schema {
query: Query
}
执行此查询时:
{
user (id: "123")
{
... UserFields
}
}
预期结果应该是:
{
"user": {
"age": "12",
"jobTitle": "student"
}
}
但是,它会导致以下错误
"message": "Validation error of type UndefinedFragment: Undefined fragment
UserFields @ 'user'",
当然,我可以通过在查询中显式地传递字段名来实现这一点,但是为了举例,我对利用GraphQL的片段特性感兴趣
你知道我做错了什么吗?模式中没有定义片段,它们允许你在构建复杂查询时创建抽象-主要目的是让你在查询的多个部分中查询同一类型时避免重复,片段未在架构中定义,但在查询中是临时定义的:
{
user (id: "123") {
... UserFields
}
}
fragment UserFields on School {
age
jobTitle
}
像这里这样的无条件片段用于避免重复。想象一下,在多个地方,您希望在同一操作中选择年龄和职务
另一方面,条件片段用于根据具体接口实现或联合子类型进行条件选择