0

我尝试使用此处示例中的 graphql 宏生成示例模式:http://sangria-graphql.org/learn/#based-on-idl-definitions得到“必须在模式中提供一种查询类型”。来自第 46 行的 AstSchemaMaterializer.scala。似乎它不喜欢模式中定义的 Hello 和 Yellow 查询。删除一个后,它能够正确解析示例。我也看不到为任何类型指定解析函数的方法。有没有人尝试过这样做?

谢谢!

4

1 回答 1

1

仅供参考,我们在 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

于 2016-08-31T22:49:52.270 回答