apollo-link-state по умолчанию, полученные из данных запроса? - PullRequest
0 голосов
/ 30 августа 2018

Примечание. Это дополнительный вопрос к моему предыдущему вопросу о Apollo GraphQl Хранение производных данных

Я использую apollo-link-state для хранения данных, полученных из данных запроса. В этом примере данные запроса из базы данных включают в себя несколько точек (x, y) на графике, а производными данными являются наклон, скользящее среднее, ускорение и т. Д.

Для составления графиков My React необходимы разные комбинации исходных и производных данных. Некоторым нужен только оригинал.

Мне нужно, чтобы производные данные рассчитывались только один раз и только тогда, когда я query для них.

Пример на сайте Apollo , по-видимому, подразумевает необходимость сначала вызвать мутацию, но это кажется мне неправильным, поскольку каждый компонент, использующий эти производные данные, должен сначала вызвать мутацию, чтобы убедиться, что она инициализирована. Я не хочу делать запросы и мутации везде, где мне нужны данные.

Итак, мой вопрос: могу ли / должен ли я использовать query резольверы в apollo-link-state или есть какой-то лучший способ думать об этом?

ОБНОВЛЕНИЕ: Я думаю, что их асинхронный пример может быть тем, что мне нужно, но мне нужно пройти через это.

1 Ответ

0 голосов
/ 07 сентября 2018

Разобрался. Не знаю, почему это не было очевидно для меня, но ... задним числом.

В конце вам просто нужно определить свой преобразователь, чтобы что-то возвращать. Решатель может даже создавать свои собственные запросы.

export const getProjectDerived = (_obj, { ProjectId }, { cache }, info) => {

  const projQueryRes = cache.readQuery({
    query: projQuery,
    variables: {
      ProjectId
    }
  })
  const newObj = { ...something here... }

  return newObj


}

Затем просто включите его в раздел «Запрос» распознавателей.

import { getProjectDerived } from './project'

const resolvers = {
  Query: {
    ProjectDerived: getProjectDerived
  }
}
export default resolvers
...