npm 包 graphql-depth-limit 使用教程

GraphQL 是一个由 Facebook 开发的开源数据查询和操作语言,它让客户端能够精确地获取需求的数据,而非一次性获取所有数据。在 GraphQL 中,客户端需要通过一个特定的查询语言来获取数据。而 graphql-depth-limit npm 包,可以用来限制 GraphQL 查询的深度,避免数据的过度获取。

安装

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

使用

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

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

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

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

以上示例代码加载了 graphql-depth-limit npm 包,使用了 Express 和 graphqlHTTP 中间件来生成 GraphQL API,并使用了 validationRules 来添加 depthLimit 校验规则。

查询深度

GraphQL 操作可以包含多个嵌套字段查询,每个字段可能又包含多个嵌套查询。这样的多级嵌套查询会导致深度不断加深,使得查询的结果过度庞大,甚至超出了自身的处理范围。

使用 graphql-depth-limit npm 包,可以防止查询的深度过多,避免数据的过度获取。

参数

graphql-depth-limit 对象包含一个参数 depthLimit,它决定了 GraphQL 查询的最大深度。当查询的深度大于 depthLimit 时,graphql-validation-complexity 将自动中止查询操作,并抛出一条错误消息。

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

示例

以下是一个使用 graphql-depth-limit 的示例:

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

在上述示例中,用户通过一个 user 查询来获取 id、name 和 friends 信息,friends 中包含 id、name 和 posts 信息。posts 中包含 id、title 和 author 信息,而 author 信息里又包含了 id、name 和 friends 信息。

当 depthLimit(查询深度)为 3 时,查询结果只能返回三层级别,所以结果将如下所示:

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

由于查询深度已经到达了 3,因此结果中只返回了三层级别的信息,而 author 的 friends 和 posts 信息被截断了。

结论

graphql-depth-limit npm 包可以帮助您有效地限制 GraphQL 查询的深度,避免数据的过度获取,让查询结果更加精确、高效和可靠。通过上述的教程和示例,您可以更好地理解 graphql-depth-limit 包的使用和意义,它有助于提高前端工程师的技能水平,让您的应用程序更加健壮、可靠,赋予更好的用户体验。

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


猜你喜欢

  • npm 包 @idan-loo/date-formatter 使用教程

    前言 在前端开发中,我们经常需要对时间进行处理和展示,但是处理时间格式的代码并不简单,尤其是涉及到不同的时区、语言和格式。在这种情况下,使用和管理一个可靠和易于维护的日期格式化工具非常重要。

    3 年前
  • npm 包 uppeat-api 使用教程

    前言 在前端开发过程中,我们经常需要与后端进行数据交互,为了简化这个过程,npm 提供了许多第三方库,包括 uppeat-api,它是一个用于发送 HTTP 请求的库,让我们在前端开发过程中更加轻松地...

    3 年前
  • npm 包 angular-flexslider-nsp 使用教程

    在现代的前端开发中,我们经常需要使用一些强大且易于使用的 UI 库来帮助我们编写出高质量的网页。其中一个非常受欢迎的库就是 angular-flexslider-nsp,它提供了一个强大且易于使用的轮...

    3 年前
  • npm 包 mixerclient 使用教程

    简介 在现代 Web 应用程序开发中,使用 npm 包已经成为了一种非常普遍的方式。其中又以前端开发中的 npm 包使用尤为频繁。因此,学会使用 npm 包是每个前端开发人员必须具备的能力之一。

    3 年前
  • npm 包 dnslookup 使用教程

    DNS(Domain Name System)是将域名映射到 IP 地址的技术。通常情况下,我们使用的 DNS 解析程序都在本地主机上安装,但有时候我们需要通过代码来进行 DNS 查询。

    3 年前
  • npm 包 windows-shortcuts-ps 使用教程

    在前端开发中,经常需要在代码中调用 Windows 快捷方式(shortcut) 执行某些操作,如打开应用程序、文件、网址等等。然而,在 Windows 中创建和管理快捷方式需要一些复杂的操作,对前端...

    3 年前
  • npm 包 angular-circular-slider 使用教程

    在前端开发中,使用现成的工具和包是提高开发效率的重要方式。一个优秀的 npm 包可以极大地节省自己的时间和精力,因此,在开发过程中学会正确使用 npm 包是非常重要的。

    3 年前
  • npm 包 aws-dynamodb-encryption-node 使用教程

    在使用 AWS DynamoDB 时,我们经常需要对敏感数据进行加密,以保证数据的安全性。这时候,aws-dynamodb-encryption-node 这个 npm 包就能派上用场了。

    3 年前
  • npm 包 king-ui 使用教程

    前端开发离不开各种基础组件、库、框架的使用,尤其是 UI 组件,可以提高开发效率和用户体验。本文介绍一个非常优秀的 UI 组件库 king-ui 的使用教程。 king-ui 简介 king-ui 是...

    3 年前
  • npm 包 detr 使用教程

    在前端开发中,我们时常需要对文本进行处理和分析。detr 是一款由 Facebook 推出的文本处理工具,它可以帮助我们将一段自然语言转化为一系列的事件和实体,从而使得文本可以更好地被计算机处理和分析...

    3 年前
  • NPM 包 generator-ss-standard-version 使用教程

    简介 generator-ss-standard-version 是一个自动化版本升级工具,用于创作 Node.js 模块的稳定版本管理。该插件基于 npm version 命令的能力,提供了一些自定...

    3 年前
  • npm 包 gulp-xe-reading 使用教程

    简介 在日常开发中,对于前端项目的构建和优化往往需要用上各种工具和技术。其中一个重要的工具是 gulp,它可以帮我们自动化构建和优化前端项目,提高工作效率和代码质量。

    3 年前
  • npm 包 ngrx-devtools-nativescript-next 使用教程

    介绍 ngrx devtools 是一个用于 Angular 应用程序中的调试工具,它能够帮助开发者更好地理解 Angular 中的数据流,以及任何在这个流上进行的操作。

    3 年前
  • npm 包 picluster-getos 使用教程

    前言 在开发前端应用时,我们通常会使用各种 npm 包来帮助我们完成工作。而 picluster-getos 就是一个用于获取树莓派群集操作系统信息的 npm 包,可以帮助我们快速获取并处理操作系统信...

    3 年前
  • npm包string-replace-file-loader使用教程

    在前端开发中,我们经常需要对文件内容进行处理或者修改,此时一个好用的工具便是 string-replace-file-loader这个npm包。这个包可以帮助我们在 Webpack 打包时自动替换文件...

    3 年前
  • npm 包 nic-chile 使用教程

    1. 什么是 nic-chile? nic-chile 是一个用于处理身份证号码(CHILE)的 npm 包。该包提供了一组函数,用于校验身份证号码的合法性、提取出身份证号码中的信息等。

    3 年前
  • npm 包 nw-webpack-plugin 使用教程

    在前端开发中,管理和打包应用是一项重要的任务。而 npm 包 nw-webpack-plugin 可以帮助我们轻松地将 webpack 打包的应用转换为 nw.js 应用。

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

    在现代移动应用程序开发中,选择器是一个非常重要的组件。React Native是一个流行的跨平台移动应用程序开发框架,它提供了基于JavaScript和React的方法来构建高性能和优雅的移动应用程序...

    3 年前
  • npm 包 colornary 使用教程

    在前端开发中,经常需要使用颜色来渲染页面,而对于色彩选择,有时候并不是很容易,就需要使用一些工具和资源来选择和生成合适的颜色。在 npm 包中,有一个很实用的工具包叫做 colornary,下面我们来...

    3 年前
  • npm 包 vue-multiple-button 使用教程

    介绍 vue-multiple-button 是一个 Vue.js 库,用于创建多样式多功能的按钮组件。 它支持以下功能: 支持圆角按钮 支持可选中的按钮 支持不同类型的按钮,例如主按钮、次按钮和警...

    3 年前

相关推荐

    暂无文章