npm 包 graphql-directive-private 使用教程

阅读时长 4 分钟读完

简介

graphql-directive-private 是一个适用于 GraphQL 所使用的 Directive 的 npm 包,用于控制 GraphQL 查询结果中私有字段的可见性。通过使用该 npm 包,开发人员可以轻松地控制将哪些字段暴露给用户,以确保数据的隐私。

安装

首先,在终端中使用以下命令来安装该 npm 包:

如何使用

1. 在服务端设置指令

在服务端的 GraphQL schema 中,需要使用指令来标记私有字段,这样才能使用 graphql-directive-private 控制可见性。

以下是设置指令的示例:

如上示例中,定义了一个名为 private 的指令并应用于 FIELD_DEFINITION 类型上。

2. 编写查询语句

在编写查询语句时,需要使用 @private 指令来标记需要控制的私有字段,这些字段只有在使用了正确的身份验证信息才能被查看到。下面是一个查询语句示例:

在上面的查询语句示例中,name 字段是公开可见的,emailphone 字段是私有的。对于 email 字段,只有经过身份验证的用户才能看到,而对于 phone 字段,只有具有“admin”角色的用户才能看到。

3. 实现控制逻辑

为了实现控制逻辑,需要使用包中提供的 PrivateDirectiveTransformer 类,该类用于在 GraphQL resolvers 中实现字段的可见性控制逻辑。

以下是示例代码:

-- -------------------- ---- -------
----- - --------------------------- - - -------------------------------------

----- ---------------- - -
  -------- ----------------------------
--

----- --------- - -
  -- -- ---- -------- ---- -------- ----- ----- ------------ -- ---- --- ----- ----- ---- -- ----
  ------ -
    ----- ------ - -- -- -------- -- -
      ------ -----------------
        ---
        ----- ----- -----
        ------ ------------ - ---------------------- - -----
        ------ ------------------------------------ - ---------- - -----
      ---
    --
  --
--

----- ------ - --- --------------
  ---------
  ----------
  -----------------
  -------- -- --- -- -- -- ----- -------- ---
---

在上面的示例代码中,我们首先将 PrivateDirectiveTransformer 导入进来,并将其存储在 schemaDirectives 对象中,然后在 ApolloServer 中传入该对象。

resolvers 对象中,我们使用 context 参数来检查当前用户是否登录,并根据具有的角色来返回相应的值。这里 email 字段只有在用户登录时才会有值,否则将为 null;phone 字段则只有具有“admin”角色的用户才能看到。这样,我们就实现了使用 graphql-directive-private 包控制字段的可见性逻辑。

结论

在本文中,我们简要介绍了 npm 包 graphql-directive-private,这是一个非常有用的工具,可以用于保护 GraphQL 查询结果中的私有字段。通过本文的演示,读者应该已经了解了如何安装、配置和使用该包。如果您正在开发一个需要控制 GraphQL 查询可见性的应用程序,那么这个包绝对是您无法错过的。希望本文能对您有所帮助!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066b5f51ab1864dac671ac

纠错
反馈