首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sangria的“准备查询”究竟是如何使用*root*参数的?

sangria的“准备查询”究竟是如何使用*root*参数的?
EN

Stack Overflow用户
提问于 2019-04-01 14:49:12
回答 1查看 184关注 0票数 0

根参数在sangria中究竟是如何使用的?这是文档

代码语言:javascript
复制
preparedQuery.execute(userContext = someCustomCtx, root = event))

查询已包含解析器,将如何使用根程序?

EN

回答 1

Stack Overflow用户

发布于 2019-08-10 09:59:32

Graphql查询本质上是嵌套的,这意味着每个GraphQL查询都有树的形状,它们从不是循环的。

执行从查询的根开始。首先,执行器在顶层调用字段的解析函数。它等待直到所有这些解析函数返回一个值。一旦发生这种情况,GraphQL服务器将获取该解析函数的返回值,并将其传递给第二级字段的解析函数,因为这些字段是查询中请求的字段。

来自树的一个节点的结果可供所有直接子节点使用,这将以级联方式在树下继续进行。

同时,Context是一个由特定查询中的所有解析器共享的对象,用于包含每个请求状态,包括身份验证信息、dataloader实例以及解析查询时应考虑的任何其他内容。Context不同于Root,因为它首先计算,然后对所有字段都可用。

现在,在所有这些上下文中,要回答您的问题,顶级字段的解析器具有可用于它们的根值。这个roottype在执行器本身中定义-

case class Executor[Ctx, Root]

并在调用Root函数时传递一个type类型的实例(或任何其他可以证明与此execute类型相同的实例)。

如果您的用例不需要使用此Root,则可以将其设置为Unit,并在调用execute方法时传入root = (),

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55457926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档