如何以编程方式定义GraphQLJava中尚未完全定义的类型字段



我是"播放";使用graphql-java和相关的kickstarter servlet,修改它以基于我自动发现的类型以编程方式构建模式。文档(几乎(在那里,但在某些地方已经过时,并引用了不推荐使用的方法。我的特别问题是,GraphQLFieldDefinition.Buildertype(...)方法的四个变体——三个接受各种(其他(构建器,一个接受GraphQLOutputType,我可能没有。此外,那些接受构造器的人实际上在这些构造器上调用build()方法,所以我急于传递我的任何";未完成的";类型建设者。我曾想过在没有字段的情况下预先定义所有类型,然后向它们添加字段,但如果build()在此时被调用,即使它们今天没有进入不需要的状态,我也可以看到未来的更新可能最多需要一个build()调用。

因此,问题是如何将字段声明为尚未定义或未完全定义的类型?例如,Employeemanager字段本身就是Employee类型,例如:

type Employee {
name: String!
manager: Employee
reports: [Employee!]
buddy: Employee
...
}

正如我在评论中所指出的,与其试图(直接(使用构建器或构建类型,不如创建一个GraphQLTypeReference的实例,如下所示:

GraphQLTypeReference.typeRef(typeName)

这将在构建架构时自动解决。

如果我们想表明这是不可为null的,即使引用的类型是,我们还需要包装成GraphQLNonNull包装器,如下所示:

GraphQLNonNull.nonNull(typeRef)

并将其用作类型。

最新更新