【问题标题】:Schema from a macro generation来自宏生成的模式
【发布时间】:2017-01-08 09:46:03
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: scala graphql sangria


    【解决方案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

    【讨论】:

    • 哦,对不起,我忘了我也在这里发帖。感谢您的跟进
    猜你喜欢
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 2017-08-12
    • 2011-07-30
    相关资源
    最近更新 更多