graphql-js的0.5.0版本对resolve函数进行了重大更改-现在它接收了一个附加的context参数。

在我看来,context旨在携带用户 session 数据。现在,rootValue参数的用例是什么?

最佳答案

RootValue是顶级解析程序的第一个参数,它在该函数中仍然有用。

从技术上讲,根查询/变异类型也可以是模式中另一个字段的解析类型。如果只能通过非根类型访问该解析函数,则只能为该解析函数提供输入值,这将很尴尬。这是一个例子:

type Mutation {
  someMutationField: Query
}

type Query {
  someField: String
}

schema {
  query: Query
  mutation: Mutation
}

保留rootValue的另一个原因:它可以用于将两个GraphQL子方案合并到一个更大的架构中,该子方案位于不同的服务器上。为了做到这一点,您需要一种将根值与查询一起传递给顶级解析函数的方法。当前用于express-graphql的HTTP传输不允许您这样做,但是可以轻松添加它。

即使我以前从未见过有人以这种方式使用rootValue,但我认为有人迟早会以这种方式使用它,或为它找到其他用途,这可能就是为什么它没有从GraphQL中删除的原因- JS。

关于graphql - 解析函数的context和rootValue参数的预期用例是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36852619/

10-12 12:59
查看更多