gpt4 book ai didi

graphql-java - 更改 graphql-java 的默认数据 getter 行为

转载 作者:行者123 更新时间:2023-12-04 17:45:26 26 4
gpt4 key购买 nike

我正在做一个概念验证项目,使用 graphql-java 来实现 GraphQL 接口(interface)的后端。在我的项目中,我从中检索数据的持久层是具有类似 map 操作的专有 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 实例。然后我希望对 idnamedescription 字段的引用由我创建的另一个自定义数据 getter 实现解析。

我已经尝试将默认数据提取器添加到我的线路中:

RuntimeWiring wiring = newRuntimeWiring()
.type("query", builder -> builder
.defaultDataFetcher(new PersistenceStoreNodeFetcher())
.dataFetcher("myQuery", new MyQueryFetcher()))
.build();

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

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

知道如何使用我自己设计的提取器替换或自定义 PropertyDataFetcher 行为吗?

最佳答案

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

RuntimeWiring wiring = newRuntimeWiring()
.type("query", builder -> builder
.dataFetcher("myQuery", new MyQueryFetcher()))
.type("myQueryResult")
.defaultDataFetcher(new PersistenceStoreNodeFetcher())
.build();

关于graphql-java - 更改 graphql-java 的默认数据 getter 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52284686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com