如何将附加信息传递给 GraphQL 中的子解析器?

问题描述

我正在使用 GraphQL Java 实现,我的简化架构如下所示:

topSection: TopSection {
  anotherSection: AnotherSection {
    name: String
    ## someMetadata: String (not part of schema)
    someAttribute: Attribute
  }
}

我必须为 topSectionsomeAttribute 字段实现解析器。对于其他字段,我将依赖 GraphQL 的隐式属性获取

现在,要使 someAttribute 的解析器工作,我需要设置 someMetadata 并将其传递给它。

一种选择是使其成为架构的一部分,someAttribute 解析器可以从 parent 参数中检索它,但我不希望它成为架构的一部分。我已经验证这有效。

然后,我尝试从 AnotherSection 解析器返回带有 someMetadata 字段的 topSection 子类,但是我遇到了 NPE 内部故障。

class TopSectionResolver implements DataFetcher<TopSection> {
    @Override
    public TopSection get(final DataFetchingEnvironment dataFetchingEnvironment) {
       AnotherSection anotherSection = AnotherSectionSubClass.builder().name().someMetadata().someAttribute().build();
       return TopSection.builder().anotherSection(anotherSection).build();
    }
}

class SomeAttributeResolver implements DataFetcher<Attribute> {
    @Override
    public Attribute get(final DataFetchingEnvironment dataFetchingEnvironment) {
        String someMetadata = ((AnotherSectionSubClass) dataFetchingEnvironment.getSource()).getSomeMetadata();
        // other processing
    }
}

AnotherSectionSubClass extends AnotherSection {
    String name;
    String someMetadata;
    Attribute someAttribute
}

错误

{\"errors\":[{\"message\":\"The execution Failed due to an internal error: java.util.concurrent.ExecutionException: java.lang.NullPointerException\",\"extensions\":{\"classification\":\"DataFetchingException\"}}]}

我无法从 GraphQL 日志中找出失败的原因。

  1. 有人能解释为什么这种传递子类的方法失败了吗?
  2. 还有什么其他选择可以实现我想要的?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)