#apollo-client
Вопрос:
У меня есть мутация, которая добавляет фильм к пользовательскому объекту через отношение «многие ко многим»:
const currentUser = useReactiveVar(currentUserVar);
const {error, loading, data: {moviesFromUser} = {}} = useQuery(resolvers.queries.ReturnMoviesFromUser, {
variables: {userId: currentUser.id},
});
if (error) return (<div>Error...</div>);
if (loading) return (<div>Loading...</div>);
const [addUserToMovie] = useMutation(resolvers.mutations.AddUserToMovie, {
update: (cache, result) => {
console.log(cache);
console.log(result);
console.log(moviesFromUser);
cache.modify({
id: cache.identify(moviesFromUser),
fields: {
movies: (previous, {toReference}) => (
result.data.addUserToMovie.map((movie) => toReference(movie))
),
},
});
},
});
const addMovie = async (movie: IMovie) => {
await addUserToMovie({variables: {
...movie,
tmdb_id: movie.id,
}});
}
};
Фильм и ссылка на фильм созданы, потому что, когда я обновляю браузер, я вижу только что добавленный фильм. Но кэш, похоже, не обновляется при добавлении фильма.
Проблема, по-видимому, в том, что эта строка result.data.addUserToMovie.map((movie) => toReference(movie))
не выполняется.
Я записал некоторые данные:
Кэш:
Результаты, это ответ с недавно добавленным фильмом:
MoviesFromUser, это ответ от пользователя, который возвращает фильмы, подключенные к пользователю: