Я создаю приложение, используя React и клиент Apollo Graphql. Это приложение должно иметь локальный преобразователь для извлечения данных из устаревшего API REST и записи его в кэш.
Я ожидаю, что этот преобразователь сначала попытается получить данные из локального кэша, а затемесли его там нет, он извлечет его из устаревшего API. Однако иногда эти данные также обновляются другими частями моего приложения, поэтому в этом случае я хотел бы, чтобы распознаватель игнорировал кэш и переходил непосредственно к устаревшему API.
Я знаю, что то, что я описал выше, похожена fetchPolicies
, который предоставляет клиент Apollo: первый сценарий будет cache-first
, а второй - network-only
, и я хотел бы использовать их для определения поведения моего распознавателя.
Однако я не был 'Я не могу найти fetchPolicy
в аргументах моего распознавателя. Подпись функции распознавателя, которую я сейчас использую, такова:
export async function customerData(
root: any,
variables: any,
context: { client: ApolloClient<any>; cache: InMemoryCache; getCacheKey: any },
info: any
): Promise<CustomerData | null> {
console.log('root', root);
console.log('variables', variables);
console.log('context', context);
console.log('info', info);
return null;
}
И политика выборки недоступна.
Есть ли способ узнать выбранное fetchPolicy
при локальном преобразователевыполняется? Или есть другой способ решить эту проблему?
Примечание 1. Я знаю, что мог бы просто отправить fetchPolicy
вместе с переменными преобразователя, но я искал более элегантное решение, которое использовало бы то, что мыуже есть в Apollo.
Примечание 2: я мог бы также использовать для этого Apollo Link Rest вместо того, чтобы писать свой собственный распознаватель и заставить его вызывать fetch
или axios
для полученияданные. Но я не хотел бы использовать его, потому что он не поддерживает настройку тайм-аута, и поскольку мое приложение предназначено для выполнения в средах с плохим подключением к Интернету, я не хочу, чтобы оно пыталось извлекать данные бесконечно.