首页 文章

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

提问于
浏览
25

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

基于this articleviewer 可用于接受令牌参数,以便我们可以查看当前登录的用户 .

我该如何实施呢?

1 回答

  • 34

    查看器根查询字段的用途

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

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

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

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

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

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

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

    • 在客户端,如果使用relay framework,则实现客户端突变 . 突变成功后,存储身份验证令牌 .

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

    一个替代方案

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

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

相关问题