如何确定用于GraphQL突变的根值

kaq*_*qao 5 graphql

我正在尝试使用GraphQL,需要帮助了解如何知道在即将执行突变时要提供的根值.

具体示例:您要更新当前登录用户的用户名.突变看起来像这样:

 mutation TestMutation {
       updateMyUsername(newName: "CoolName") {
                       username }
}
Run Code Online (Sandbox Code Playgroud)

这里提供的根对象是当前用户.但是当你收到变异而没有解析它并看到它的名字时,你怎么知道这个?基于URL无法做出决定,因为只存在一个端点.解析字符串只是为了将它再发送到将被解析的地方听起来最好浪费.

通常的做法是在URL或请求体中提供一些额外的参数来为应用程序提供更多的上下文吗?

Lee*_*ron 5

在URL中包含更多数据并不常见,但由于每个变异都由函数支持,因此您无需解析其名称,您只需在函数中定义它即可.

由于突变始终处于顶级,因此它们的根对象将始终是顶级根对象.如果需要访问其他对象,则需要确保已提供足够的信息来检索它

要跟踪当前登录的用户,请查看context运行GraphQL查询的初始参数之一,并在每个分辨率函数中提供.上下文经常用于跟踪登录用户.

既然你有一个定义"changeMyUsername"的函数,你有登录用户,并且你有新用户名提供的参数,你应该拥有实现该函数体所需的一切.