Обновление кеша в клиенте apollo 2.0 - PullRequest
0 голосов
/ 10 декабря 2018

У меня следующий запрос:

const FETCH_CUSTOMERS = gql`
  query customers($cursor: Int!, $pageNumber: Int!) {
    customers(cursor: $cursor, pageNumber: $pageNumber)
      @connection(key: "customers", filter: ["pageNumber"]) {
      customers {
        customerID
        firstname
        lastname
        email
        phone
        CustomerPhoto {
          photo
        }
      }
      count
    }
  }
`;

Когда выполняется мутация, я пытаюсь обновить кэш.Проблема возникает, когда выполняется операция cache.writeQuery (...) .

 <Mutation
      mutation={UPDATE_CUSTOMER}
      update={(
        cache,
        {
          data: {
            updateCustomer: { customer }
          }
        }
      ) => {
        const { page } = queryString.parse(search);
        const parsePageInt = parseInt(page, 10);
        const {
          customers: { customers }
        } = cache.readQuery({
          query: FETCH_CUSTOMERS,
          variables: { pageNumber: parsePageInt }
        });
         const updatedCustomersArray = customers.map(customerFromCache => {
           return customerFromCache.customerID === customer.customerID
             ? customer
             : customerFromCache;
         });
   cache.writeQuery({
       query: FETCH_CUSTOMERS,
      variables: { pageNumber: parsePageInt },
       data: { customers: { customers: updatedCustomersArray } }
     });

  />

Кэш обновлен, но я получаю следующую ошибку: enter image description here

В начале проекта я добавил в свойство объекта InMemoryCache addTypename:ложь .Это выглядело как плохое решение, потому что я недавно решил использовать запрос с интерфейсами и встроенными фрагментами, для которых в схеме требуется свойство __ typename .

Вот форма кэшированного запроса в кеше apollo enter image description here

Есть ли какой-нибудь простой способ, как это решить?

...