桑格利亚汽酒中使用的 root 参数到底如何? 这是documentation
preparedQuery.execute(userContext = someCustomCtx, root = event))
查询已经包含 resolver ,如何使用 root ?
答案 0 :(得分:0)
Graphql
查询是嵌套的,这意味着每个GraphQL
查询都具有树的形状,它们从不循环。
执行从查询的根部开始。首先,执行程序在顶层调用字段的resolve函数。等待所有这些解析函数返回值。一旦发生这种情况,GraphQL服务器将获取此解析函数的返回值,并将其传递给第二级字段的解析函数,因为这些是查询中请求的字段。
树的一个节点的结果可用于其所有直接子节点,并以层叠的方式在树上继续进行。
同时,Context
是特定查询中所有解析程序共享的对象,用于包含每个请求状态,包括身份验证信息,数据加载器实例以及解析时应考虑的任何其他内容查询。 Context
与Root
的不同之处在于,它首先进行计算,然后可用于所有字段。
现在有了所有这些上下文,为回答您的问题,顶级字段的解析器具有可用的根值。此root
值type
在执行程序本身中定义-
case class Executor[Ctx, Root]
,当您调用Root
函数时,您传递了一个type
类型的实例(或任何其他可以证明与此execute
相同的实例)。
如果您的用例不需要使用此Root
,则可以将其设置为Unit并在调用execute方法时传入root = (),
。