GraphQL突变:不变违反:必须包含查询定义

Sid*_*ury 4 reactjs graphql apollo-client

我正在尝试mutation从React应用程序调用我的graphQL服务器。react代码如下所示:

client.query({
  query: gql`
    mutation{
        addTeam(input:{name:"Somename", label:"somelabel"})
        {error, status}
    }`
 }).then((resp: any) => {
      console.log("Success", resp);
 }).catch(err => {
      throw err;
 })
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

在此处输入图片说明

但是,如果我将相同的请求从更改mutationquery,并在node-graphQL-server中进行必要的更改以处理该请求,query而不是mutation使用相同的代码。

Apollo-Client Mutation 文档说

在GraphQL中,变异与语法查询相同,唯一的区别是您使用关键字mutation而不是query...

哦,顺便说一句,相同的mutation查询在中工作Playground。请帮助大家,我的工作有点停止了这个问题。

谢谢!

Dan*_*den 19

您应该mutate将客户端的方法用于突变,而不是query方法。该方法的选项可以在docs中找到。阿波罗对于如何处理查询和变异抱有看法,因此每种方法都有适合每个操作行为的不同选项(例如,mutate包括一个refetchQueries选项)。

client.mutate({
  mutation: gql`
    mutation {
      addTeam(input:{name:"Somename", label:"somelabel"}) {
        error
        status
      }
    }`,
})
Run Code Online (Sandbox Code Playgroud)

  • 天啊!“client.mutate”……谁知道呢? (2认同)