nuxt-modules / apollo

Nuxt.js module to use Vue-Apollo. The Apollo integration for GraphQL.
https://apollo.nuxtjs.org
MIT License
953 stars 198 forks source link

fetchPolicy no-cache config not working #348

Open sharoneh opened 4 years ago

sharoneh commented 4 years ago

Version

v4.0.1-rc.1

Reproduction link

https://stackoverflow.com/questions/57415569/nuxt-js-apollo-client-how-to-disable-cache

Steps to reproduce

I'm calling the query and mutation methods inside vuex actions, through this.app.apolloProvider.defaultClient

After making a mutation, I dispatch another action querying the updated data but the nuxt page would display the old data still, and the request wasn't displayed in the network tab of devtools. I'd have to reload the whole page in the browser to get the client to fetch the new data.

I disabled the caching in nuxt.config.js as documented but the problem wasn't solved.

After several days searching for solutions, I finally found this answer in stackoverflow that saved me. After setting the fetchPolicy to 'no-cache' in a plugin, the problem was finally solved.

What is expected ?

Setting fetchPolicy to 'no-cache' in nuxt.config.js should work.

What is actually happening?

The fetchPolicy configuration in nuxt.config.js isn't working, I had to override it using a plugin.

This bug report is available on Nuxt community (#c329)
WhatzzUp commented 4 years ago

@sharoneh you saved my day! Overriding default client's options works like a charm!

JohnOlushola commented 3 years ago

This came in clutch! I've been on this issue for while now. Worked like a charm, thanks @sharoneh

honeyamin commented 3 years ago

i think u can use it in your smart query too like this apollo: { postBy: { query: gql' query getPostBySlug ($slug: String = "") { postBy(slug: $slug) { id title slug date } }',error() { return false },fetchPolicy: "no-cache||network-only||cache-and-network",errorPolicy:"all|none||ignore",prefetch: true,variables() { return { slug: this.$route.params.slug } }, }, }

honeyamin commented 3 years ago

i think u can use it in your smart query too like this apollo: { postBy: { query: gql' query getPostBySlug ($slug: String = "") { postBy(slug: $slug) { id title slug date } }',error() { return false },fetchPolicy: "no-cache||network-only||cache-and-network",errorPolicy:"all|none||ignore",prefetch: true,variables() { return { slug: this.$route.params.slug } }, }, }

i used graphql-tag and i change " ` " in my code to " ' "

BennaceurHichem commented 2 years ago

@sharoneh Your solution works properly for the global configuration change, but what if I want to make a specific query/mutation as no-cache, and without changing the global config using the plugin approach, this didn't work for me, any solution for that?

awacode21 commented 2 months ago

@BennaceurHichem i am dealing with that case. I created a Bug ticket that describes the problem. As your comment is already 2 years old and it seems like it is still not fixed, is there any comment from your side? did you found a workaround?