在 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