GraphQL查询仅在突变后一次获取数据

时间:2019-07-15 10:01:06

标签: redux graphql apollo-client

我想在执行addCourseToOrder突变后获取userUnpurchasedCourses查询,但是我无法做到这一点。 在向订单添加一个类之后,它将获取userUnpurchasedCourses查询,但是如果我再次向订单添加课程,则该查询将不会运行。

我已经尝试在突变的then块中执行查询,还尝试了refetch查询,但是refetch查询的问题是我无法获得查询结果。

这就是我定义突变的方式

const Mutation = async (query, variables, refetch) =>
  client.mutate({
    mutation: gql`
      ${query}
    `,
    variables,
    refetchQueries: () => [
      {
    query: gql`
      ${refetch?refetch:query}
    `,
    variables
  }
]
  });

我在这里使用了这种突变

let res = await Mutation(classes.addCourseToOrder(), {
          userId,
          id,
          orderId,
          amount,
        })
     if (res.data.addCourseToOrder) {
        this.props.getUserUnpurChasedCourses({id})
     }

getUserUnpurChasedCourses将负责运行userUnpurchasedCourses。

如果您需要更多细节,请告诉我

谢谢。

1 个答案:

答案 0 :(得分:1)

当我观察到这个问题时,我发现查询在每次突变后都在运行,但不是从服务器(网络)中获取数据,而是从缓存中获取结果,然后经过大量查询之后,我发现那里是一种禁用从缓存中获取数据的方法,因此我一遍又一遍地尝试直到完成。

我所做的就是更改查询内容

export const Query = async (query, variables) =>
  client.query({
    query: gql`
      ${query}
    `,
     variables
  });

对此

export const Query = async (query, variables) =>
  client.query({
    query: gql`
    ${query}
   `,
   variables,
  fetchPolicy: 'network-only'
 });