说明在Apollo客户端上调用mutate的语法

时间:2018-10-09 07:34:19

标签: graphql apollo apollo-client

client.mutate[1]({
    mutation[2]: gql`
        mutation[3] signOut[4] {
            signOut[5] {
                success[6]
            }
        }
    `,
});

括号中的数字是我对查询不同部分的注释。我对它们的含义的最佳猜测如下。在错误或不完整的地方纠正我。我最大的疑问是斜体:

[1] client.mutate Apollo客户端上有一个mutate方法,因为Apollo客户端处理变异的方式与查询不同。

[2]变异只是一个名为mutation的对象属性传递给了Apollo客户端

[3]突变服务器上的根突变字段

[4]注销:突变根字段上可用的字段。 令我惊讶的是,signOut在突变后立即写出,而不是放在方括号内的单独行中

[5] signOut 我猜服务器上的signOut字段解析为返回另一个称为signOut的字段? 我理解正确吗?这正常吗?

[6]成功:内部singOut字段解析为返回名为成功的对象

1 个答案:

答案 0 :(得分:1)

关于 [4]注销 [5]注销,这是您为突变赋予的名称。

例如:

mutation signOut {
  signOut {
    success
  }
}

相同
mutation logOut {
  signOut {
    success
  }
}

两个突变都触发的methodsignOut,但是它们具有不同的名称(logOutsignOut)。

所有其他要点都是正确的。

注释:

突变(或查询)的name仅用于客户端,服务器没有命名突变的定义。

在一个突变中具有2个水平的意义是因为您可以在一个突变中触发多个突变,例如:给定必要的the user signs out and unsubscribes to notifications,我们可以建立一个突变,例如:

mutation logOutAndUnsubscribe {
  signOut {
    success
  }
  unsubscribe {
    success
  }
}

在这种情况下,我们将命名为logOutAndUnsubscribe的突变,该突变触发两个突变signOutunsubscribe。同样,服务器实现了signOutunsubscribe,但是对logOutAndUnsubscribe的知识为零。