GraphQL中的根查询字段viewer的目的是什么?

基于this articleviewer可用于接受 token 参数,因此我们可以查看当前登录的用户。

我应该如何实现?

最佳答案

viewer根查询字段的目的
viewer不是GraphQL或特定于Relay的东西。大多数Web应用程序出于其用户或查看者的某些目的。可以将为用户提供的各种数据建模的顶级实体命名为viewer。您也可以将其命名为user。例如,Relay todo example具有viewer根查询字段:

viewer: {
  type: GraphQLUser,
  resolve: () => getViewer(),
},

我们也可以不用viewer。例如,Relay starwars example没有任何viewer根查询字段。

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

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

我的回答遵循您提到的文章中已经描述的内容。这些步骤是:
  • 在服务器端,创建一个变异以获得身份验证 token 。让我们将其命名为LoginMutation。此突变的输入是用户凭据,输出是身份验证 token 。
  • 在客户端,如果使用relay framework,请实现客户端突变。突变成功后,存储身份验证 token 。
  • 在客户端中继代码上,为authToken查询添加viewer参数。 authToken的值是成功登录突变后收到的身份验证 token 。

  • 替代

    如本文中已经提到的,验证用户身份的另一种方法是在GraphQL之外进行验证。您可能希望看到两个出色的答案thisthis了解详细信息。

    乔纳斯·赫尔弗(Jonas Helfer)对此写了两部分的文章,您会发现它非常有用:Part 1Part 2

    关于graphql - GraphQL中的查看器字段是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37635328/

    10-12 06:44