npm 包 graphql-extended 使用教程

什么是 graphql-extended?

GraphQL-extended 是一个为 GraphQL 提供了更加强大的功能和扩展能力的 npm 包。它可以为 GraphQL 查询提供更加灵活的处理方式,同时支持自定义的 schema、resolver 和中间件。

使用 graphql-extended

安装

graphql-extended 可以通过 npm 来进行安装:

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

基本用法

首先,我们需要定义一个 GraphQL 的 schema,来描述我们的数据结构和查询方式。接下来是一个简单的例子:

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

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

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

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

在上面的例子中,我们定义了一个查询,返回了一个单一的字符串 "Hello World!"。

接下来,我们使用 graphql-extended 来改进我们的查询方式:

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

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

在上面的代码中,我们使用了 graphqlHTTP 函数来将我们的 schema 和 root 传给 graphql-extended。我们将 graphiql 属性设置为 true,以便我们可以使用 GraphiQL UI 工具测试我们的查询。

我们还创建了一个新的 GraphQLExtension 实例,并将它传递给 extensions 数组。这将为我们的 GraphQL 查询提供更加详细的信息。

使用中间件

我们可以使用 graphql-extended 提供的中间件机制,来在查询到达 resolver 之前或之后,添加额外的处理逻辑。下面是一个中间件的示例:

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

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

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

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

在上述代码中,我们定义了一个 items 查询,该查询接受一个 ids 参数。我们使用两个中间件,分别在查询到达 resolver 之前和之后,对参数进行处理和处理结果。

缓存结果

我们经常需要对查询结果进行缓存,以避免重复的计算。graphql-extended 提供了一个可以在 resolver 中启用缓存的方法:

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

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

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

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

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

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

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

在上述代码中,我们定义了一个 NodeCache 实例来存储我们的查询结果。我们还定义了一个 resolver 函数,在其中检查缓存并存储结果。在 graphqlHTTP 函数中,我们将 fieldResolver 属性设置为我们的 resolver。

我们还创建了一个 GraphQLExtension 实例,并将它传递给 extensions 数组。我们启用了 cacheControl 选项,以允许 graphql-extended 自动控制查询的缓存策略。

结论

使用 graphql-extended,我们可以在 GraphQL 查询中添加更多的处理逻辑,并获得更加详细的信息。它为我们提供了方法来处理中间件、启用缓存和更灵活地定义 schema 和 resolver。希望这篇文章能帮助你更好地理解和使用 graphql-extended。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6005596581e8991b448d6e32


猜你喜欢

  • npm 包 js-patterns 使用教程

    前言 JavaScript 经常用于编写前端应用程序,而在编写应用程序时,我们需要使用各种设计模式来组织和管理代码。Js-patterns 是一个提供了许多有用的设计模式的 npm 包,可以帮助我们更...

    2 年前
  • npm 包 dragit 使用教程

    前言 在前端开发中,拖拽功能经常被使用。而 dragit 就是一个能够帮助我们快速实现拖拽功能的 npm 包。本文将会介绍使用 dragit 的方法和注意事项,希望能够对初学者有所帮助。

    2 年前
  • npm 包 @karboh/apn 使用教程

    前言 近年来,移动 APP 持续发展,推送也成为了 APP 开发的重要环节之一。而 Node.js 这样的后端技术,也可以非常方便的进行推送服务的开发,其中 Apple 推送服务(APNs)也是 No...

    2 年前
  • npm 包 flux.js 使用教程

    在前端开发中,为了管理应用的复杂状态,通常使用一些技术来保持代码规范和可维护性。其中就有 flux.js 这个广泛使用的客户端状态管理工具。在本文中,我们将会详细介绍如何使用 flux.js,从而提高...

    2 年前
  • npm 包 pine.js 使用教程

    什么是 pine.js pine.js 是一个基于 jQuery 的插件,它可以让用户方便地操纵和控制 HTML 元素的显示和隐藏,使前端开发更加便利。 安装和引入 pine.js 你可以通过 npm...

    2 年前
  • npm 包 random-questions 使用教程

    随机生成问题是进行前端开发时经常会遇到的需求。而 npm 包 random-questions 可以帮助我们轻松地生成随机问题。在本文中,我们将为您提供关于如何在您的项目中使用 random-ques...

    2 年前
  • npm 包 wee3-cli 使用教程

    什么是 wee3-cli wee3-cli 是一个基于 Node.js 的命令行工具,用于快速搭建 web 项目的脚手架工具。通过 wee3-cli,你可以快速生成一个基于 React/Vue/Ang...

    2 年前
  • npm 包 eslint-config-trek 使用教程

    简介 eslint-config-trek 是一款基于 eslint 的配置规则包,它集成了一系列的代码规范,可以帮助前端开发者更好地规范自己的代码。 安装 在使用 eslint-config-tr...

    2 年前
  • npm 包 generator-mklib-typescript 使用教程

    在前端开发中,我们经常需要开发一些可复用的库或组件,这时候我们需要搭建一些基础的工程架构。generator-mklib-typescript 会帮助我们快速创建 TypeScript 类库工程的基本...

    2 年前
  • npm 包 promise-rabbit-rpc 使用教程

    在现代的前端开发中,前端与后端之间的通信是非常重要的一环。而使用 RabbitMQ 作为消息队列来实现前后端通信,则可以实现解耦合、高可用以及高伸缩性等优势。 在 RabbitMQ 中,RPC(远程过...

    2 年前
  • npm 包 enrollment 使用教程

    简介 enrollment 是一个用于轻松管理使用领域驱动设计的前端应用程序的 npm 包。通过 enrollment,开发人员可以方便地定义应用程序和领域模型之间的映射关系,并使用便捷的接口来管理应...

    2 年前
  • npm 包 generator-tslib-cjs 使用教程

    什么是 generator-tslib-cjs generator-tslib-cjs 是一个能帮助你生成 TypeScript CommonJS 模块的 npm 包。

    2 年前
  • npm 包 vide-plugin-mode-vue 使用教程

    简介 npm 是一个很受欢迎的 JavaScript 包管理工具,而 vide-plugin-mode-vue 是一个专门为 Vue.js 开发者设计的 NPM 包,它提供了基于 Vue.js 的视频...

    2 年前
  • npm 包 umi2project 使用教程

    介绍 npm 是一个包管理器,可以让我们在项目中轻松地使用各种第三方库和框架。而 umi2project 就是一个基于 umi 的脚手架工具,可以帮助我们快速创建和管理 umi 项目。

    2 年前
  • npm 包 @wardrakus/possessive 使用教程

    在前端开发中,我们经常需要处理字符串的拼接和格式化等操作。而对于英文文本中名词的所有格(也称'属格'),如果不掌握,会让我们的代码显得不够优雅和专业。这时,npm 包@wardrakus/posses...

    2 年前
  • npm 包 @cqingwang/redux-form 使用教程

    简介 @cqingwang/redux-form 是一个基于 Redux 的表单管理库,用于简化 React 应用程序中表单的开发和管理。该库提供了丰富的表单组件和验证机制,方便开发者快速构建出高质量...

    2 年前
  • npm 包 react-native-music-metadata 使用教程

    音频文件的元数据可以提供很多有用的信息,比如歌曲的标题、演唱者、唱片封面等等。在 react-native 中,我们可以使用 react-native-music-metadata 包来获取音频文件的...

    2 年前
  • npm 包 brewingcalcs 使用教程

    Brewingcalcs 是一个基于 Node.js 的 npm 包,它可以帮助酿酒爱好者进行酿酒计算。这个 npm 包支持多种计算方式,比如: 估算酒精含量 计算麦芽糖含量 计算水质 在本篇文章...

    2 年前
  • npm包@idrinth/automatic-formatting使用教程

    在使用 JavaScript 进行前端开发时,保持代码风格的一致性是非常重要的。好的代码风格可以让代码更加易读、易维护,也可以帮助团队协作时更高效地沟通。而手动调整代码风格费时费力,容易出现失误。

    2 年前
  • npm 包 wxmp-chart 使用教程

    介绍 wxmp-chart 是一个可以在微信小程序中使用的简单易用的图表库。它提供了多种图表类型,包括条形图、折线图、饼图等,并且支持自定义各种样式。使用 wxmp-chart,可以快速方便地在小程序...

    2 年前

相关推荐

    暂无文章