npm 包 @saeris/graphql-scalars 使用教程

阅读时长 5 分钟读完

在 GraphQL 中,标量 (Scalar) 类型是指表示单一值的数据类型,比如字符串、整数、浮点数、布尔值等等。@saeris/graphql-scalars 是一个 npm 包,它封装了常用的标量类型,如 Email、URL、日期、时间等等,使用它可以方便地在 GraphQL 的 schema 中定义这些标量类型。本文将介绍如何使用 @saeris/graphql-scalars 包,并提供详细的使用教程及代码示例。

安装与导入

使用 npm 安装 @saeris/graphql-scalars:

在工程中引入 @saeris/graphql-scalars:

使用示例

在 GraphQL 的 schema 中使用 @saeris/graphql-scalars,可以定义例如下面这些标量类型:

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

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

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

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

在上面的例子中,我们使用了 @saeris/graphql-scalars 中定义好的五种标量类型:EmailAddress、URL、Date、DateTime、Time,可以看到使用起来非常方便。这些标量类型都有自己的格式验证规则,有助于我们在输入数据时保证数据的合法性。

除此之外,@saeris/graphql-scalars 还提供了更多的标量类型,例如 PhoneNumber、PostalCode、ISBN 等,有具体需求时可以查阅官方文档。

自定义标量类型

如果 @saeris/graphql-scalars 中提供的标量类型不能满足需求,我们还可以自定义一些标量类型。例如下面这个例子:

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

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

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

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

在上面的例子中,我们定义了一个 EmailAddress 标量类型,它在序列化、处理输入值和字面量时都会执行对应的操作,如果遇到不合法的值,则会抛出异常。在 schema 中使用这个标量类型就和使用 @saeris/graphql-scalars 中的标量类型一样。

小结与思考

使用 @saeris/graphql-scalars 包可以很方便地定义 GraphQL 中常用的标量类型,避免重复造轮子,并且这个包中的标量类型都有自己的格式校验规则,能够帮助我们在输入数据时保证数据的合法性。

在使用自定义标量类型时,我们需要根据具体的需求编写对应的序列化、处理输入值和字面量的代码,这加强了我们对标量类型的理解和掌握。同时,我们也需要更多地关注输入数据的合法性,减少不合法数据的出现。

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