npm 包 @boltline/apollo-upload-server 使用教程

在现代 web 应用中,文件上传已经成为了一个必不可少的功能。@boltline/apollo-upload-server 模块能够帮助我们快速并且简单地实现文件上传功能。

安装

你可以使用 npm 通过以下命令来安装 @boltline/apollo-upload-server 模块:

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

使用

在你的服务器端代码中,你需要做以下的两个重要的步骤。

第一步:安装 multipart 处理器

在服务器端,我们需要使用 multipart 处理器来处理文件上传。一些 Node.js 的框架已经提供了这个功能,但是我们还是可以使用 npm 安装它。下面就以 Express.js 为例,你可以运行以下命令来安装 multer:

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

第二步:添加文件上传处理中间件

接下来,我们需要添加文件上传处理中间件到我们的 Apollo GraphQL 服务器中。在使用 @boltline/apollo-upload-server 之前,处理请求的语句可能看起来像这样:

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

现在,我们需要使用处理文件上传的一个中间件,将请求体中的文件存储起来,并将它们作为参数传递到 GraphQL resolvers 中。最后的代码将会看起来像这样:

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

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

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

上面的代码中,我们使用了 multer 中的 memoryStorage 来将上传的文件保存在内存中。当然,你也可以将文件存储在磁盘上,这不在本教程的讨论范围之内。

此外,我们需要将 GraphQLUpload 类传递给 graphqlUploadExpress 中间件作为图解器的选项 (option)。

第三步:编写 query,mutation,并将上传的文件作为参数传递

在前面的代码中,我们简单地添加了上传文件的处理中间件。接下来,我们将向你展示如何将这些上传的文件对象作为参数传递给 GraphQL resolvers。下面给出一个简单的文件上传的 mutation:

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

从上面的代码中,我们可以看出,你可以将上传的文件作为简单的变量来传递。

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

上面的代码中,我们简单地将创建读取流、文件名、mimetype 和编码组合起来,然后将它们作为一个整体返回。在实现存储上传文件的 storeUpload 函数中你需要自己根据自己的需要修改,我们不会在这个教程中做详细的解释。

示例代码

下面给出一个完整的示例代码:

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

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

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

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

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

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

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

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

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

结论

使用 @boltline/apollo-upload-server 模块,我们可以轻松地在我们的 Apollo GraphQL 服务器中实现文件上传功能。当然,在不同的框架和环境下,做出的一些具体实现还是会有所不同,但总的来说,这个步骤是相对固定的。

为了更好的展示具体使用,我们还给出了一个样例代码。在这个例子中,我们使用了 multer 作为我们上传文件的处理器,在 GraphQL schema 中,我们定义了 Query.type 和 Mutation.type,然后使用 makeExecutableSchema 函数创建一个实现模式的 schema 对象,并将其与我们的 resolvers 相结合。

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


猜你喜欢

  • npm 包 commitlint-config-czx 使用教程

    随着前端开发的发展,代码的提交规范已经成为了必要的标准。commitlint-config-czx 是一种使用简单、功能强大的规范包,让我们更好地管理我们的代码。 什么是 commitlint-con...

    3 年前
  • npm 包 flow-singleton 使用教程

    前言 随着前端代码逐渐变得复杂,代码中出现的 bug 越来越多。Flow 是 Facebook 出品的静态类型检查工具,可以帮助我们开发更加健壮的代码。但是使用 Flow 也有一些问题,比如多次引用同...

    3 年前
  • NPM包 token-sort使用教程

    介绍 在前端开发中,我们常会遇到需要对字符串进行排序的需求。而NPM包token-sort就是专门用于字符串排序的工具。 它能够根据定义的规则将字符串数组进行排序。

    3 年前
  • npm 包 @programming-languages-logos/lua 使用教程

    简介 @programming-languages-logos/lua 是一种用于制作比特币的开源编程语言 Lua 的官方 npm 包。它的安装方法非常简单,只需要使用 npm 命令即可。

    3 年前
  • npm 包 justows.conn.tmpl 使用教程

    介绍 justows.conn.tmpl 是一个基于模板引擎的npm包,它可用于处理在前端开发中使用到的模板。这个包采用简单的语法,适用于前端开发人员,无论是使用 React,Vue 还是其他的框架,...

    3 年前
  • npm 包 easy-helpful-utils 使用教程

    简介 在前端开发中,我们经常需要用到一些常用的工具函数。而在实际项目开发时,写这些函数的过程往往会浪费很多时间,同时也会影响代码的可维护性和开发效率。这时我们可以使用 npm 包,方便地引用现有的工具...

    3 年前
  • npm 包 generator-virtualmin 使用教程

    简介 generator-virtualmin 是一个使用 Yeoman 生成器快速创建 Virtualmin 主题的 npm 包。 Yeoman 是一个基于 Node.js 的脚手架工具,可以帮助我...

    3 年前
  • npm 包 @qc/date-round 使用教程

    在开发前端应用时,使用 JavaScript 管理日期是一项非常常见的任务。在处理日期时,有时需要将日期进行四舍五入或向上/向下舍入以便在图表、数据可视化、计算等任务中获取更好的结果。

    3 年前
  • npm 包 @wyno/hookis 使用教程

    在前端开发中,Hook 是一种实用而强大的工具,它可以让开发者在不编写 class 组件的情况下使用 React state 和其他 React 特性。有很多优秀的 Hook 库可供选择,其中 @wy...

    3 年前
  • npm包 is-it-thursday-yet 使用教程

    在web开发中,我们常常需要使用各种npm包来简化开发流程。is-it-thursday-yet npm包可以方便地检查今天是否是星期四。本篇文章将向大家介绍is-it-thursday-yet np...

    3 年前
  • npm 包 react-native-add-custom-props 使用教程

    简介 react-native-add-custom-props 是一个 React Native 的 npm 包,旨在让开发者可以自定义组件的 props,从而更加灵活地定制组件。

    3 年前
  • npm 包 @beetle/bee-grid-react 使用教程

    前言:本篇文章主要介绍使用 npm 包 @beetle/bee-grid-react 的方法和使用技巧,适用于前端开发人员和有前端基础的开发者。 1. 什么是 @beetle/bee-grid-rea...

    3 年前
  • npm 包 tmux-kill 使用教程

    简介 tmux-kill 是一个 NPM 包,它使得在 tmux 环境下,杀掉特定进程变得更加容易。如果你需要在 tmux 中结束一个进程,这个包就是你需要的。它提供了一个简单的命令行工具,运行它就可...

    3 年前
  • npm 包 @programming-languages-logos/r 使用教程

    简介 @programming-languages-logos/r 是一个 npm 包,用于显示不同编程语言的 logo 图标,其中包含 R 编程语言的 logo 图标。本教程将为大家介绍如何使用它。

    3 年前
  • npm包 @programming-languages-logos/swift使用教程

    什么是@programming-languages-logos/swift @programming-languages-logos/swift是一个npm包,它提供了Swift编程语言的Logo图片...

    3 年前
  • npm 包 justows.conn.q 使用教程

    在前端开发过程中,我们通常需要与后端进行数据交互。为了简化这一过程,有些开发者会选择使用第三方库来处理请求和响应。在这个方面,justows.conn.q 是一个实用的 npm 包,它提供了所有必要的...

    3 年前
  • npm包yp-xel使用教程

    在当前的前端开发中,工具的使用越来越重要。npm是一个非常常用的包管理工具,它的包可以帮助我们快速地开发出高效的web应用。yp-xel是一种常用的npm包,它是一种用于快速构造网页布局的CSS框架。

    3 年前
  • npm包serve-jsonnet-handler使用教程

    在前端开发过程中,我们通常需要消化后台返回的json数据,但是有些情况下,我们需要根据特定的业务逻辑进行数据处理,这时候需要使用jsonnet。 这篇文章将介绍npm包serve-jsonnet-ha...

    3 年前
  • npm 包 @drubin/client-node 使用教程

    前端开发中,使用第三方库和工具可以帮助我们更快速地开发和优化项目。npm 是最为常见的第三方包管理工具,其中包括了许多优秀的前端库。今天,我们将介绍一个名为 @drubin/client-node 的...

    3 年前
  • npm 包 @lrnwebcomponents/paper-lightbox 使用教程

    简介 在前端开发中,经常需要使用到弹出框进行交互。@lrnwebcomponents/paper-lightbox 是一个基于 Polymer 库开发的弹出框组件。

    3 年前

相关推荐

    暂无文章