npm 包 graphql-transform-schema 使用教程

GraphQL 是一种用于 API 的查询语言和运行时,GraphQL 旨在让 API 更加高效、强大和易于使用。而 graphql-transform-schema 是一个 npm 包,用于操作 GraphQL 接口的 schema。

本文将详细介绍 graphql-transform-schema 的使用方法,包括安装、基本使用以及实际应用场景。

安装

在终端中输入如下命令进行安装:

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

提醒:使用该包之前必须了解 GraphQL 基础知识。

基本使用

引入包

在使用之前,需要先引入 graphql-transform-schema 包,可以使用以下方式:

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

实例化

实例化 Transform 对象时需要传入一个对象作为参数。该对象中包含了需要进行的转换过程。

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

其中,schema 是 GraphQL schema 对象,transforms 是 Transform 对象数组。可以使用以下代码生成 schema 对象:

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

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

甚至也可以从一个 GraphQL 文件中加载 schema,如下所示:

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

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

而 transforms 数组中可以包含多个转换类型。例如:

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

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

在上述代码中,将 AddArgumentsAsVariables、RenameTypes 和 TransformCompositeFields 三个转换类型放在同一个数组中。其中,AddArgumentsAsVariables 是将变量分解为参数输入。例如:

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

转换为:

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

而 RenameTypes 是用于修改类型名。例如:

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

转换为:

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

而 TransformCompositeFields 是用于修改字段。例如:

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

转换为:

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

其中 HelloOutput 的字段 value 包含了原来的 Hello 对象。同时,也可以在 resolveField 函数中对字段的返回值进行转换和处理。

实际应用场景

实际应用场景中,graphql-transform-schema 可以用于对输入的 GraphQL 请求进行修改和校验。例如:

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

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

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

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

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

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

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

在上述代码中,通过 AddArgumentsAsVariables 将变量拆分为参数,然后通过 KeepArguments 保留 name 和 age 两个参数,过滤掉了 gender。接着使用 FilterInputObjectFields 将 gender 从输入中过滤掉,最后通过 ReplaceFieldInput 修改了 age 参数的类型,将 age 参数变为了必填项。

通过以上步骤的转换,得到的新的 GraphQL 请求如下:

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

其中,age 变为了必填项。在开始解析 GraphQL 请求时,应该根据新的 GraphQL 请求来进行解析。

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


猜你喜欢

  • 使用 ngx-tryton-json 包进行前端交互

    什么是 ngx-tryton-json 包? ngx-tryton-json 是一个 npm 包,它可以使 Angular 应用程序与 Tryton 后端进行交互。

    3 年前
  • npm 包 @sidneys/text-ellipsis 使用教程

    在前端开发中,我们常常需要对文本进行截断操作,以使得页面布局更加美观和整洁。这时,我们可以使用一个叫做 @sidneys/text-ellipsis 的 npm 包来实现基于 CSS 的省略号截断效果...

    3 年前
  • npm 包 fpmk-angular2-image-upload 使用教程

    随着 Web 应用的发展,图像文件的上传已经成为了 Web 应用开发中不可避免的问题。对于前端开发人员来说,如何方便快捷地上传图像文件已经成为了一项必要的技能。而 fpmk-angular2-imag...

    3 年前
  • npm包kendo-ui-react-jquery-fixed-events-scheduler使用教程

    1. 简介 kendo-ui-react-jquery-fixed-events-scheduler是一个用于创建可定制的事件日程安排的React组件。它基于Kendo UI和jQuery,并提供了许...

    3 年前
  • npm 包 ngx-test-helpers 使用教程

    当我们开发 Angular 应用时,我们经常需要编写一些单元测试来确保程序的功能和逻辑正确。但是,为了编写有效的单元测试,我们需要访问组件、指令和服务实例,而这些实例通常需要进行类似的配置和设置。

    3 年前
  • npm 包 scond 使用教程

    在前端开发中,我们经常需要对数组进行排序、去重以及其他操作。这时,scond npm 包就能帮我们解决问题。scond 是一个轻量级的 JavaScript 库,提供了一整套数组操作 API,可用于排...

    3 年前
  • npm 包 data-manager 使用教程

    在前端开发中,我们往往需要大量的数据处理和管理。为了方便我们的开发,可以使用第三方的 npm 包 data-manager。data-manager 的作用是为我们提供一个可复用的、高效的数据管理器,...

    3 年前
  • npm 包 echo.io-client 使用教程

    在现代 Web 开发中,实时通信和即时消息是一项非常重要的功能。在前端开发中,为了实现实时通信,通常需要涉及到 WebSocket 等复杂的技术。这就意味着我们需要编写大量的代码来处理数据通讯、错误处...

    3 年前
  • npm包 mvalidator 使用教程

    mvalidator 可以用于验证输入是否合法。在前端开发中,很多表单都需要验证输入的合法性,如邮箱、电话号码、日期等。 安装 使用 npm 进行安装: --- ------- ---------- ...

    3 年前
  • npm 包 cronjobjs 使用教程

    什么是 cronjobjs cronjobjs 是一个用于创建和处理 cronjob 的 npm 包,cronjob 是一种让你能够在指定时间执行任务的机制,通常用于定期执行某些操作。

    3 年前
  • npm 包 jnclude 使用教程

    在前端开发中,我们经常需要引用外部 JS 或 CSS 文件来实现各种功能。通常情况下,我们需要手动在 HTML 页面中添加 script、link 标签引用这些文件。

    3 年前
  • npm 包 botkit-storage-mongoose 使用教程

    在 bot 开发过程中,我们需要保存和管理用户数据,而 MongoDB 是现在最流行的 NoSQL 数据库之一。botkit-storage-mongoose 是一个 npm 包,它提供了基于 Mon...

    3 年前
  • npm 包 swagger-express-validator-formats 使用教程

    前言 对于前端开发人员而言,了解如何使用 npm 包对于开发过程中大有裨益。在本篇文章中,我们将会介绍一个非常实用的 npm 包:swagger-express-validator-formats,以...

    3 年前
  • npm包poolq使用教程

    介绍 npm包poolq是一个能够获取使用者池队列的库。 安装和使用 在命令行中执行以下命令安装poolq : --- ------- -----在我们要使用的文件中,导入或引用poolq模块: --...

    3 年前
  • npm 包 npmliar 使用教程

    随着前端技术的不断发展,越来越多的开发者会选择使用 npm 包来管理项目依赖。npmliar 是一个非常有用的 npm 包,可以帮助我们快速地查找和管理依赖。在本文中,我们将深入探讨 npmliar ...

    3 年前
  • npm 包 frame-loader 使用教程

    在前端开发中,很多情况下我们需要在页面中引入其他网站或者页面的内容,比如广告或者嵌入式页面。这时候就需要使用 iframe 标签来实现。但如果需要在 iframe 中加载一个完整的页面,那么就需要使用...

    3 年前
  • npm 包 cerebro-windowfinder 使用教程

    介绍 Cerebro-windowfinder 是一个可以实现在桌面应用中查找窗口、切换窗口的快捷工具。它可以被集成到各种前端开发工具中,如 VSCode、Sublime Text、IntelliJ ...

    3 年前
  • npm 包 censorify-billychan 使用教程

    简介 censorify-billychan 是一款用于文本过滤的 npm 包,可以用于在前端、后端或命令行下进行文本过滤处理。该包实现了对指定文本中的敏感词汇进行替换、删除等操作,支持自定义敏感词汇...

    3 年前
  • npm 包 react-infinite-scroll-waypoint 使用教程

    在前端开发中,实现无限滚动是非常常见的需求,它可以带来更好的用户体验,也可以加快网站或应用的加载速度。而 react-infinite-scroll-waypoint 是一个非常好用的 npm 包,可...

    3 年前
  • npm 包 react-native-blockies 使用教程

    1. 什么是 react-native-blockies react-native-blockies 是一个生成 Blockies 的 React Native 包。

    3 年前

相关推荐

    暂无文章