Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
250 views
in Technique[技术] by (71.8m points)

vue.js - Vue-Apollo. Update cache with query which have a foreign key

I have the following Problem. When i use deleteProgram, i update the Cache with the Query: All_Programs which gives me all Programs that i have. This works very well.

deleteProgram(id) {
      this.$apollo.mutate({
        mutation: DELETE_PROGRAM,
        variables: {
          id: id
        },
        update: store => {
          const data = store.readQuery({
            query: ALL_PROGRAMS
          });
          data.allPrograms = data.allPrograms.filter(i => {
            return i.id !== id;
          });
          store.writeQuery({ query: ALL_PROGRAMS, data });
        }
      });
    }
  },

Now i want to do the same with deleteActivity. There i have to load the Query ACTIVITIES_BY_PROGRAM_ID which gives me all Activites with the same Program ID. I Can delete he Activity too, but the cache dont update. When i delete it, i need to click F5.

deleteActivity(id) {
      this.$apollo.mutate({
        mutation: DELETE_ACTIVITY,
        variables: {
          id: id
        },
        update: store => {
          const data = store.readQuery({
            query: ACTTIVITES_BY_PROGRAM_ID,
            variables: {
              id: this.$store.getters.programId
            }
          });
          data.activitiesByProgramId = data.activitiesByProgramId.filter(i => {
            return i.id !== id;
          });
          store.writeQuery({ query: ACTTIVITES_BY_PROGRAM_ID, data });
        }
      });
    }

I Hope anyone can help me.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...