桑格利亚利亚格利亚中间件中 Executor.execute(????) 的正确签名是什么,用于记录缓慢的 GraphQ



我正在尝试集成桑格利亚汽车中间件以在我的应用程序中记录缓慢的 GraphQL 查询,但得到以下编译

错误:

类型不匹配;
找到:sangria.schema.Schema[models.UserRepo,Unit]
required: sangria.schema.Schema[Any,Unit]
Note:models.UserRepo <:Any,但类模式在 Ctx 类型中是不变的。

您可能希望将 Ctx 定义为 +Ctx。(SLS 4.5(
涉及默认参数的应用程序中发生错误。

代码片段:

val Query = ObjectType("Query", List[Field[UserRepo, Unit]]
(Field("store", StoreType, resolve = _ ⇒ ()) ))
val schema = Schema(Query, Some(MutationType))
val logResult = Executor.execute(SchemaDefinition.schema,
query.asInstanceOf[Document], middleware = SlowLog(newlogger,
threshold = 10 seconds) :: Nil)

这是参考链接:https://github.com/sangria-graphql/sangria-slowlog

请帮助我知道什么是Executor.execute(​​​????)的正确签名

谢谢!

我认为主要问题是您已经根据UserRepo定义了模式,但是您尚未在执行时提供它。我想添加一个userContext参数应该可以解决问题:

Executor.execute(SchemaDefinition.schema, query,
userContext = new UserRepo,
middleware = SlowLog(newlogger, threshold = 10 seconds) :: Nil)

我还进行了此测试以检查类型(这些类型与您的场景类似(,但它的编译效果很好:

val schema: Schema[Repo, Unit] = ???
val md: Middleware[Any] = ???
Executor.execute(schema, query, new Repo, middleware = md :: Nil)

如果它仍然无法编译,我建议您提供重现该问题的完整自包含示例。(例如,在您的示例中,您没有显示MutationType的类型(

相关内容

  • 没有找到相关文章

最新更新