«Нарушение инварианта» после вызова readQuery с использованием apollo angular - PullRequest
0 голосов
/ 05 июня 2019

Я просто тестирую простой случай, когда я могу добавить кошек и показать детали кошек. Но я получаю эту ошибку bundle.esm.js:805 Invariant Violation: Can't find field color on object { "id": "5cf74600ed38a91e472e0e20", "name": "Rose", "breed": "Italian", "__typename": "Cat" }

при попытке обновить кеш после добавления нового кота

this.apollo.mutate<CreateCatMutationResponse>({ mutation: CREATE_CAT_MUTATION, variables: { name: this.name, breed: this.breed, color: this.color }, // awaitRefetchQueries: false, update: (store, {data: {createCat}}) => { // Read the data from our cache for this query. const data: any = store.readQuery({query: cats, variables: {id: createCat.id}});

    // Add our comment from the mutation to the end.
    if (data) {
      data.cats.push(createCat);
    }
    // Write our data back to the cache.
    store.writeQuery({query: cats, data});
  },
}`

Так как на странице, которую я пытаюсь добавить, новая кошка показывает только 2 свойства, т.е. имя и породу, а не цвет:

this.allCat = this.apollo.watchQuery<Query>({ query: gql запрос котов { кошки { Я бы название разводить } } , fetchPolicy: 'cache-and-network' }) .valueChanges .pipe( map(result => result.data.cats) ); }

Есть идеи, как мне избавиться от этой проблемы, не используя запросы на повторную проверку?

...