【问题标题】:How to dynamically reuse resolvers in Apollo?如何在 Apollo 中动态重用解析器?
【发布时间】:2020-02-26 04:24:00
【问题描述】:

假设我有以下查询:

// 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 未定义。

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

【问题讨论】:

    标签: graphql apollo react-apollo apollo-client


    【解决方案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

    【讨论】:

    • 此链接失效,能否请您提供另一个链接。我似乎无法正确使用上下文参数。
    猜你喜欢
    • 2018-04-19
    • 1970-01-01
    • 2023-03-13
    • 2021-07-29
    • 2018-10-04
    • 2017-04-15
    • 2020-09-11
    • 2015-11-15
    • 2017-10-03
    相关资源
    最近更新 更多