在GraphQL中查看器字段的含义是什么?

Sib*_*ini 26 graphql relayjs

viewerGraphQL 中根查询字段的用途是什么?

根据这篇文章,viewer可以用来接受一个令牌参数,这样我们就可以看到当前登录的是谁.

我该如何实施呢?

Ahm*_*ous 33

viewer根查询字段的用途

viewer不是GraphQL或Relay特有的东西.大多数Web应用程序都为其用户或查看者提供某些用途.用于对提供给用户的各种数据建模的顶级实体可以命名为viewer.你也可以命名user.例如,Relay todo示例具有viewer根查询字段:

viewer: {
  type: GraphQLUser,
  resolve: () => getViewer(),
},
Run Code Online (Sandbox Code Playgroud)

我们也可能没有viewer.例如,Relay starwars示例没有任何viewer根查询字段.

简而言之,将此viewer作为GraphQL架构的根查询字段使我们能够基于当前用户提供数据.

实现:如何将身份验证令牌与查看器一起使用

我的回答遵循您提到的文章中已经描述的内容.步骤是:

  1. 在服务器端,创建突变以获取身份验证令牌.我们来命名吧LoginMutation.此突变的输入是用户凭证,输出是身份验证令牌.

  2. 在客户端,如果使用中继框架,则实现客户端突变.突变成功后,存储身份验证令牌.

  3. 在客户端中继代码上,authTokenviewer查询添加参数.值为authToken成功登录突变后收到的身份验证令牌.

替代

正如本文中已经提到的,对用户进行身份验证的另一种方法是在GraphQL之外进行.您可能希望看到两个优秀的答案,这个有关详细信息.

Jonas Helfer写了一篇由两部分组成的文章,你会发现它非常有用:第1 部分,第2部分