我遇到了麻烦,被困住了。我曾经在其他代码上复制了此代码,但是此方法在apollo上不起作用。这是我在vue.js上使用阿波罗的方法。
handleLikePost() {
const variables = {
postId: this.postId,
username: this.user.username
};
this.$apollo.mutate({
mutation: LIKE_POST,
variables,
update: (cache, { data: { likePost } }) => {
const data = cache.readQuery({
query: GET_POST,
variables: { postId: this.postId }
});
data.getPost.likes += 1;
cache
.writeQuery({
query: GET_POST,
variables: { postId: this.postId },
data
})
.then(({ data }) => {
// const updatedUser = {
// ...this.user,
// favorites: data.likePost.favorites
// };
//this.$store.commit("setUser", updatedUser);
console.log(this.user);
console.log(data.likePost);
})
.catch(err => console.error(err));
}
});
}
答案 0 :(得分:0)
我认为问题在于您没有从中退货;
cache.writeQuery()
这就是为什么.then({data})
无法从writeQuery()
那里得到东西的原因