什么是 graphql-tool-utilities?
graphql-tool-utilities 是一个 npm 包,可以帮助你更好地使用 graphql 工具集。它提供了很多方便的工具,比如根据 graphql schema 自动生成 resolver 等。在使用 graphql 调用 API 时,这个工具集可以使代码更易读,可维护和隔离。
如何使用 graphql-tool-utilities?
首先,需要确保你已经安装了 npm 包管理工具,并已创建了一个 npm 项目。
在终端中输入以下命令:
npm install graphql-tool-utilities --save
安装成功后,在项目中引入该包:
const { addResolversToSchema } = require('graphql-tool-utilities')
自动生成 resolver
我们可以通过 graphql-tool-utilities 提供的 addResolversToSchema 方法,根据 schema 自动生成 resolver。我们有以下两种方式来生成 resolver:
1. 生成普通 resolver
我们可以通过以下代码,生成含有一个方法的 resolver:
addResolversToSchema({ schema, resolvers: { Query: { hello: (_, { name }) => `Hello ${name || 'World'}!`, }, }, })
通过上述代码,我们就成功生成了一个名为 hello
的 resolver,可以轻松地在 graphql schema 中使用,如下:
type Query { hello(name: String): String }
2. 生成带有 DB 操作的 resolver
我们可以通过以下代码,生成含有数据库查询和更新操作的 resolver:
-- -------------------- ---- ------- ---------------------- ------- ---------- - ------ - ------------ ----- -- -- ----- ----------------- ------------ ----- --- - -- -- -- ----- ------------------- -- --------- - -------- ----- --- - ---- -- -- ----- ----------------- ----------- ----- --- - --- ---- -- -- ----- ----------------- ------ -- -- --
在上述代码中,我们通过调用 db 中的方法,实现了获取、新增、修改用户信息等数据库操作,可以轻松地通过 graphql schema 进行调用。
构建最优的 GraphQL Schema
在开发 GraphQL 项目时,我们需要思考如何构建最优的 GraphQL Schema,这样在后续的开发和维护中会更加容易。graphql-tool-utilities 提供了一系列工具,帮助我们在开发过程中构建优化的 schema。
1. 将 schema 拆分为多个文件
在 GraphQL 项目中,schema 往往会随着项目的扩展变得越来越庞大。这时,我们可以将 schema 拆分为多个文件,使代码更易读、可维护。使用 graphql-tool-utilities 中的 mergeTypes
和 mergeResolvers
方法,可以轻松地将这些文件合并为一个 schema。
2. 优化类型定义
在 GraphQL Schema 中,我们需要定义各种不同的类型,比如 Int
、String
等。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