GraphQL中根查询字段 viewer 的用途是什么?
viewer
基于this article, viewer 可用于接受令牌参数,以便我们可以查看当前登录的用户 .
我该如何实施呢?
viewer 不是GraphQL或Relay特有的 . 大多数Web应用程序都为其用户或查看者提供某些用途 . 用于对提供给用户的各种数据建模的顶级实体可以命名为 viewer . 您也可以将其命名为 user . 例如,Relay todo example有一个 viewer 根查询字段:
user
viewer: { type: GraphQLUser, resolve: () => getViewer(), },
我们也可能没有 viewer . 例如,Relay starwars example没有任何 viewer 根查询字段 .
简而言之,将此 viewer 作为GraphQL架构的根查询字段使我们能够基于当前用户提供数据 .
我的回答遵循您提到的文章中已经描述的内容 . 步骤是:
在服务器端,创建突变以获取身份验证令牌 . 我们将它命名为 LoginMutation . 此突变的输入是用户凭证,输出是身份验证令牌 .
LoginMutation
在客户端,如果使用relay framework,则实现客户端突变 . 突变成功后,存储身份验证令牌 .
在客户端中继代码上,为 viewer 查询添加 authToken 参数 . authToken 的值是成功登录突变后收到的身份验证令牌 .
authToken
正如本文中已经提到的,对用户进行身份验证的另一种方法是在GraphQL之外进行 . 您可能希望查看两个优秀答案this和this以获取详细信息 .
Jonas Helfer撰写了一篇由两部分组成的文章,你会发现它非常有用:Part 1,Part 2
1 回答
查看器根查询字段的用途
viewer
不是GraphQL或Relay特有的 . 大多数Web应用程序都为其用户或查看者提供某些用途 . 用于对提供给用户的各种数据建模的顶级实体可以命名为viewer
. 您也可以将其命名为user
. 例如,Relay todo example有一个viewer
根查询字段:我们也可能没有
viewer
. 例如,Relay starwars example没有任何viewer
根查询字段 .简而言之,将此
viewer
作为GraphQL架构的根查询字段使我们能够基于当前用户提供数据 .实现:如何将身份验证令牌与查看器一起使用
我的回答遵循您提到的文章中已经描述的内容 . 步骤是:
在服务器端,创建突变以获取身份验证令牌 . 我们将它命名为
LoginMutation
. 此突变的输入是用户凭证,输出是身份验证令牌 .在客户端,如果使用relay framework,则实现客户端突变 . 突变成功后,存储身份验证令牌 .
在客户端中继代码上,为
viewer
查询添加authToken
参数 .authToken
的值是成功登录突变后收到的身份验证令牌 .一个替代方案
正如本文中已经提到的,对用户进行身份验证的另一种方法是在GraphQL之外进行 . 您可能希望查看两个优秀答案this和this以获取详细信息 .
Jonas Helfer撰写了一篇由两部分组成的文章,你会发现它非常有用:Part 1,Part 2