如何在Apollo中动态重用解析器?

时间:2019-10-30 19:48:21

标签: graphql apollo react-apollo apollo-client

说我有以下查询:

// queries.js

const GET_FOO = gql`
  query Foo {
    foo {
      id
      bar
      baz @client
      qux @client
    }
  }
`

以及以下解析器:

// resolvers.js

export default {
  Foo: {
    baz: root => computeBaz(),
    qux: root => computeQux(root.baz),
  }
}

root.baz未定义。

在计算baz中可以重用qux吗?我在文档中找不到解决方案。

1 个答案:

答案 0 :(得分:1)

我知道了。

以下是传递给解析器的所有参数:

fieldName: (obj, args, context, info) => result;

我们可以使用上下文在解析器之间传递数据:

export default {
  Foo: {
    baz: (root, _args, context) => {
      context.baz = computeBaz()
      return context.baz;
    },
    qux: (root, _args, context) => {
      return computeQux(context.baz);
    }
  }
}

另请参阅本地状态的docs