Как динамически повторно использовать резольверы в Apollo? - PullRequest
0 голосов
/ 30 октября 2019

Скажите, что у меня есть следующий запрос:

// 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 Ответ

1 голос
/ 31 октября 2019

Я понял это.

Вот все параметры, переданные в резольвер:

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);
    }
  }
}

Также см. документы о локальном штате.

...