我尝试使用此处示例中的 graphql 宏生成示例模式:http://sangria-graphql.org/learn/#based-on-idl-definitions并得到“必须在模式中提供一种查询类型”。来自第 46 行的 AstSchemaMaterializer.scala。似乎它不喜欢模式中定义的 Hello 和 Yellow 查询。删除一个后,它能够正确解析示例。我也看不到为任何类型指定解析函数的方法。有没有人尝试过这样做?
谢谢!
仅供参考,我们在 gitter 聊天中讨论过:
https://gitter.im/sangria-graphql/sangria?at=57c70ec8ff952280079f484c
该文档包含一个错误,但现在已修复。
该buildFromAst
方法接受第二个参数,即模式构建器。它允许您自定义模式生成的任何方面,其中还包括字段解析器。这是一个小例子:
val ast =
graphql"""
schema {
query: Hello
}
type Hello {
bar: Bar
}
type Bar {
isColor: Boolean
}
"""
val clientSchema: Schema[Any, Any] =
Schema.buildFromAst(ast, new DefaultAstSchemaBuilder[Any] {
override def resolveField(typeDefinition: TypeDefinition, definition: FieldDefinition): Context[Any, _] ⇒ Action[Any, _] =
// your resolve logic goes here
})
更复杂和完整的例子可以在测试中找到。例如这个:https ://github.com/sangria-graphql/sangria/blob/e5a5d2c5ced3ce03c2e9437886be4683cf11ce6a/src/test/scala/sangria/schema/AstSchemaMaterializerSpec.scala#L901-L901