【发布时间】:2018-03-18 03:53:05
【问题描述】:
我正在使用 GrapgQL 和 Java。我需要提取所有属于特定父母的孩子。我使用了以下方式,但它只会获取父级,不会获取任何子级。
schema {
query: Query
}
type LearningResource{
id: ID
name: String
type: String
children: [LearningResource]
}
type Query {
fetchLearningResource: LearningResource
}
@Component
公共类 LearningResourceDataFetcher 实现 DataFetcher{
@Override
public LearningResource get(DataFetchingEnvironment dataFetchingEnvironment) {
LearningResource lr3 = new LearningResource();
lr3.setId("id-03");
lr3.setName("Resource-3");
lr3.setType("Book");
LearningResource lr2 = new LearningResource();
lr2.setId("id-02");
lr2.setName("Resource-2");
lr2.setType("Paper");
LearningResource lr1 = new LearningResource();
lr1.setId("id-01");
lr1.setName("Resource-1");
lr1.setType("Paper");
List<LearningResource> learningResources = new ArrayList<>();
learningResources.add(lr2);
learningResources.add(lr3);
learningResource1.setChildren(learningResources);
return lr1;
}
}
return RuntimeWiring.newRuntimeWiring().type("Query", typeWiring -> typeWiring.dataFetcher("fetchLearningResource", learningResourceDataFetcher)).build();
我的控制器端点
@RequestMapping(value = "/queryType", method = RequestMethod.POST)
public ResponseEntity query(@RequestBody String query) {
System.out.println(query);
ExecutionResult result = graphQL.execute(query);
System.out.println(result.getErrors());
System.out.println(result.getData().toString());
return ResponseEntity.ok(result.getData());
}
我的请求如下所示
{
fetchLearningResource
{
name
}
}
谁能帮我解决这个问题?
【问题讨论】:
-
我没有关注这里有什么问题?您的意思是发出如下查询:
{ fetchLearningResource { name, children { name } } } -
这适用于一对一父母。它将获取该特定父级的所有子级。但是我们如何提取所有的孩子。例如,孩子可能有孩子。在这种情况下,我们如何提取所有这些?
-
您可以继续嵌套查询,但没有办法说“递归地让所有内容都到底部”,因为这很容易意味着无限级别。需要有一个明确的结束级别。
-
如果我们不知道确切的最终级别,是否有办法编写通用查询来获取所有子级。你能告诉我吗
标签: graphql graphql-java