npm 包 graphql-tool-utilities 使用教程

阅读时长 6 分钟读完

什么是 graphql-tool-utilities?

graphql-tool-utilities 是一个 npm 包,可以帮助你更好地使用 graphql 工具集。它提供了很多方便的工具,比如根据 graphql schema 自动生成 resolver 等。在使用 graphql 调用 API 时,这个工具集可以使代码更易读,可维护和隔离。

如何使用 graphql-tool-utilities?

首先,需要确保你已经安装了 npm 包管理工具,并已创建了一个 npm 项目。

在终端中输入以下命令:

安装成功后,在项目中引入该包:

自动生成 resolver

我们可以通过 graphql-tool-utilities 提供的 addResolversToSchema 方法,根据 schema 自动生成 resolver。我们有以下两种方式来生成 resolver:

1. 生成普通 resolver

我们可以通过以下代码,生成含有一个方法的 resolver:

通过上述代码,我们就成功生成了一个名为 hello 的 resolver,可以轻松地在 graphql schema 中使用,如下:

2. 生成带有 DB 操作的 resolver

我们可以通过以下代码,生成含有数据库查询和更新操作的 resolver:

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

在上述代码中,我们通过调用 db 中的方法,实现了获取、新增、修改用户信息等数据库操作,可以轻松地通过 graphql schema 进行调用。

构建最优的 GraphQL Schema

在开发 GraphQL 项目时,我们需要思考如何构建最优的 GraphQL Schema,这样在后续的开发和维护中会更加容易。graphql-tool-utilities 提供了一系列工具,帮助我们在开发过程中构建优化的 schema。

1. 将 schema 拆分为多个文件

在 GraphQL 项目中,schema 往往会随着项目的扩展变得越来越庞大。这时,我们可以将 schema 拆分为多个文件,使代码更易读、可维护。使用 graphql-tool-utilities 中的 mergeTypesmergeResolvers 方法,可以轻松地将这些文件合并为一个 schema。

2. 优化类型定义

在 GraphQL Schema 中,我们需要定义各种不同的类型,比如 IntString 等。graphql-tool-utilities 提供了 mapSchema 方法,可以帮助我们快速地改变类型的定义,比如将 String 类型变为 GraphQLDate 类型。

3. 实现查询

在 GraphQL 项目中,查询是最常用的操作之一。在查询时,我们需要在 schema 中定义查询关系。使用 graphql-tool-utilities 提供的 mapSchema 方法,可以帮助我们快速地定义查询。

示例代码

在我们使用 graphql-tool-utilities 中的 addResolversToSchema 方法时,有时需要对 resolver 进行校验。以下是一个简单的示例代码:

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

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

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

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

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

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

在上述代码中,我们使用 makeExecutableSchema 创建了一个 schema,然后通过 addResolversToSchema 方法添加了一个 resolver。在 resolver 中,我们使用 throw new Error 来模拟了校验条件不满足的情况。需要注意的是,在 graphql 的执行过程中,错误信息会按层级上报,所以我们可以捕获这个错误并进行处理。

结语

graphql-tool-utilities 提供了很多方便的工具,使得 GraphQL 开发更加简单。通过本文,你学习到了如何安装、使用这个工具集,以及如何构建最优的 GraphQL Schema。希望本文对你有所帮助,谢谢阅读!

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

纠错
反馈