我是"播放";使用graphql-java
和相关的kickstarter servlet,修改它以基于我自动发现的类型以编程方式构建模式。文档(几乎(在那里,但在某些地方已经过时,并引用了不推荐使用的方法。我的特别问题是,GraphQLFieldDefinition.Builder
有type(...)
方法的四个变体——三个接受各种(其他(构建器,一个接受GraphQLOutputType
,我可能没有。此外,那些接受构造器的人实际上在这些构造器上调用build()
方法,所以我急于传递我的任何";未完成的";类型建设者。我曾想过在没有字段的情况下预先定义所有类型,然后向它们添加字段,但如果build()
在此时被调用,即使它们今天没有进入不需要的状态,我也可以看到未来的更新可能最多需要一个build()
调用。
因此,问题是如何将字段声明为尚未定义或未完全定义的类型?例如,Employee
的manager
字段本身就是Employee
类型,例如:
type Employee {
name: String!
manager: Employee
reports: [Employee!]
buddy: Employee
...
}
正如我在评论中所指出的,与其试图(直接(使用构建器或构建类型,不如创建一个GraphQLTypeReference
的实例,如下所示:
GraphQLTypeReference.typeRef(typeName)
这将在构建架构时自动解决。
如果我们想表明这是不可为null的,即使引用的类型是,我们还需要包装成GraphQLNonNull
包装器,如下所示:
GraphQLNonNull.nonNull(typeRef)
并将其用作类型。