解释在 Apollo 客户端上调用 mutate 的语法

Explain the syntax for calling mutate on the 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 客户端的命名 mutation

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

[4] signOut 突变根字段上可用的字段。 令我惊讶的是,signOut 是在突变后立即写入的,而不是在一对括号内的它自己的行上

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

[6] success 内部 singOut 字段解析为 return 一个名为 success

的对象

关于 [4] signOut[5] signOut 那是你给突变的名字。

例如:

mutation signOut {
  signOut {
    success
  }
}

是相同的突变
mutation logOut {
  signOut {
    success
  }
}

两个突变触发的 methodsignOut 但它们有不同的名称(logOut & signOut)。

其他所有点都是正确的。

备注:

mutation(or query)的name只针对客户端,服务端没有命名mutations的定义。

在一个突变中有 2 个级别的要点是因为您可以在一个突变中触发多个突变,例如:给定必要条件 the user signs out and unsubscribes to notifications 我们可以构建一个突变,例如:

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

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

的了解为零