我正在尝试集成Sangria中间件来记录我的应用程序中的慢速GraphQL查询,但获得以下编译
错误:
类型不匹配;
发现:sangria.schema.Schema [models.UserRepo,Unit]
必需:sangria.schema.Schema [Any,Unit]
注意:models.UserRepo<:Any,但类Schema在类型
中是不变的 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(????)
谢谢!
答案 0 :(得分:1)
我认为主要问题是您已根据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
的类型)