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

时间:2019-03-16 22:06:22

标签: reactjs graphql apollo-client

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

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

我收到以下错误:

enter image description here

但是,如果我将相同的请求从mutation更改为query,并在node-graphQL-server中进行必要的更改,以将其作为query而不是{{1 }}相同的代码有效。

Apollo客户端mutation docs says

  

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

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

谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

当前有一个GitHub问题谈到此错误:https://github.com/apollographql/apollo-client/issues/1539