我正在尝试集成桑格利亚汽车中间件以在我的应用程序中记录缓慢的 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
的类型(