首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改graphql-java的默认数据抓取器行为

更改graphql-java的默认数据抓取器行为
EN

Stack Overflow用户
提问于 2018-09-12 05:51:52
回答 1查看 1.3K关注 0票数 3

我正在做一个概念验证项目,使用graphql-java来实现GraphQL接口的后端。在我的项目中,我从其中检索数据的持久层是一个专有的API,它具有类似于映射的操作,我想根据这个专有的API编写自定义的数据获取逻辑。

我的根级查询的运行时连接如下所示:

代码语言:javascript
复制
RuntimeWiring wiring = newRuntimeWiring()
    .type("query", builder -> builder
        .dataFetcher("myQuery", new MyQueryFetcher()))
    .build();

get()方法当前返回一个名为PersistenceStore.Node的类的实例,该对象具有类似于映射的访问方法,我可以在后续的数据获取程序中调用这些方法。但我一直无法让数据抓取器正确连接以处理这些后续的抓取。

在上面的例子中,我想要一个如下的查询:

代码语言:javascript
复制
query {
  myQuery {
    id,
    name,
    description
  }
}

我希望上面的运行时连接中显示的MyQueryFetcher类返回一个PersistenceStore.Node实例。然后,我希望通过我创建的另一个自定义数据抓取器实现来解析对idnamedescription字段的引用。

我尝试在我的连接中添加一个默认的数据抓取器:

代码语言:javascript
复制
RuntimeWiring wiring = newRuntimeWiring()
    .type("query", builder -> builder
        .defaultDataFetcher(new PersistenceStoreNodeFetcher())
        .dataFetcher("myQuery", new MyQueryFetcher()))
    .build();

但是这似乎不起作用-- PersistenceSAtoreNodeFetcher类的get方法从未被调用过。

我一直在翻阅graphql-java文档和源代码,但还没有找到任何东西。

你知道如何用我自己设计的fetcher来替换或定制PropertyDataFetcher行为吗?

EN

回答 1

Stack Overflow用户

发布于 2018-09-25 08:22:26

我怀疑defaultDataFetcher是应用于查询对象,而不是应用于myQuery返回的对象类型。您可能需要做的是对myQuery对象类型应用defaultDataFetcher。

代码语言:javascript
复制
RuntimeWiring wiring = newRuntimeWiring()
    .type("query", builder -> builder
      .dataFetcher("myQuery", new MyQueryFetcher()))
    .type("myQueryResult")
      .defaultDataFetcher(new PersistenceStoreNodeFetcher())
    .build();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52284686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档