使用 Apollo-Client 重新获取查询会引发错误

问题描述

我正在使用 Apollo 客户端向我的 graphql 服务器发布突变。突变完成后,我想重新获取该数据。我尝试在 refetchQueries 挂钩中使用 useMutation 参数,但是在执行代码时收到此错误

查询选项是必需的。您必须在中指定您的 GraphQL 文档 查询选项。

这是发送突变的代码行:

const [addUser,{ data,loading,error }] =
    useMutation(ADD_USER_QUERY,{
        refetchQueries:[GET_USERS_QUERY]
    });

这是我的查询(硬编码参数是为了查看问题是否是由于传递变量造成的):

export const ADD_USER_QUERY = gql`
    mutation {
        createuser(name: "Albert Einstein",email: "albert@yahoo.ca") {
            id
            name
        }
    }
`;

谢谢!

解决方法

好的,所以我想出了问题所在。我必须在 "query" 数组中传递一个带有 refetchQueries 键的对象:

const [addUser,{ data,loading,error }] =
    useMutation(ADD_USER_QUERY,{
        refetchQueries: [{ query: GET_USERS_QUERY }],});

这很奇怪,因为 ApolloDocs 中没有提到它。他们只是使用一个数组...

// Refetches two queries after mutation completes
const [addTodo,error }] = useMutation(ADD_TODO,{

  refetchQueries: [
    GET_POST,// DocumentNode object parsed with gql
    'GetComments' // Query name
  ],});

有人知道这是为什么吗?

谢谢!