我正在做一个概念验证项目,使用graphql-java来实现GraphQL接口的后端。在我的项目中,我从其中检索数据的持久层是一个专有的API,它具有类似于映射的操作,我想根据这个专有的API编写自定义的数据获取逻辑。
我的根级查询的运行时连接如下所示:
RuntimeWiring wiring = newRuntimeWiring()
.type("query", builder -> builder
.dataFetcher("myQuery", new MyQueryFetcher()))
.build();get()方法当前返回一个名为PersistenceStore.Node的类的实例,该对象具有类似于映射的访问方法,我可以在后续的数据获取程序中调用这些方法。但我一直无法让数据抓取器正确连接以处理这些后续的抓取。
在上面的例子中,我想要一个如下的查询:
query {
myQuery {
id,
name,
description
}
}我希望上面的运行时连接中显示的MyQueryFetcher类返回一个PersistenceStore.Node实例。然后,我希望通过我创建的另一个自定义数据抓取器实现来解析对id、name和description字段的引用。
我尝试在我的连接中添加一个默认的数据抓取器:
RuntimeWiring wiring = newRuntimeWiring()
.type("query", builder -> builder
.defaultDataFetcher(new PersistenceStoreNodeFetcher())
.dataFetcher("myQuery", new MyQueryFetcher()))
.build();但是这似乎不起作用-- PersistenceSAtoreNodeFetcher类的get方法从未被调用过。
我一直在翻阅graphql-java文档和源代码,但还没有找到任何东西。
你知道如何用我自己设计的fetcher来替换或定制PropertyDataFetcher行为吗?
发布于 2018-09-25 08:22:26
我怀疑defaultDataFetcher是应用于查询对象,而不是应用于myQuery返回的对象类型。您可能需要做的是对myQuery对象类型应用defaultDataFetcher。
RuntimeWiring wiring = newRuntimeWiring()
.type("query", builder -> builder
.dataFetcher("myQuery", new MyQueryFetcher()))
.type("myQueryResult")
.defaultDataFetcher(new PersistenceStoreNodeFetcher())
.build();https://stackoverflow.com/questions/52284686
复制相似问题