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 包 node-red-contrib-gitlab 使用教程

    当今时代,GitLab 已成为一个非常流行的代码托管平台,而且在使用中发现,部署与配置都比较方便。为了方便开发人员更好的使用 GitLab,npm 上已有了一个名为 node-red-contrib-...

    3 年前
  • npm 包 react-native-scrollable-tab-view-cys 使用教程

    前言 在前端开发中,移动端开发的需求越来越普遍,同时也为我们带来了新的技术挑战。在移动端开发中,很多时候我们需要用到 tab 栏,为了方便我们的开发,这里介绍了一个 npm 包:react-nativ...

    3 年前
  • npm 包 grunt-jfw 使用教程

    在前端开发中,我们经常需要使用一些自动化构建工具来优化我们的开发效率,其中像 Grunt、Gulp 等构建工具就是非常常用的工具之一。今天我们将介绍 Grunt 中的一个常用插件——grunt-jfw...

    3 年前
  • npm 包 simple-javascript-router 使用教程

    在前端开发中,常常需要通过 URL 控制页面的显示和跳转,这就需要使用到路由。而 simple-javascript-router 就是一个简单而强大的 JavaScript 路由库,能够通过监听 U...

    3 年前
  • npm 包 @mebank/fcm-push 使用教程

    Firebase Cloud Messaging (FCM) 是一款跨平台、开放式的消息传递服务,可供开发人员使用其 API 以将消息传送至云端网络。而使用 FCM,需要配置和设置各种设备和应用程序参...

    3 年前
  • npm 包 sanitize-mail 使用教程

    概述 在前端开发中,经常需要对用户输入的邮件地址进行验证和处理。而邮件地址中往往包含许多特殊字符,如 angle brackets(< >)、反斜杠(\)等。

    3 年前
  • npm 包 gekkio 使用教程

    为什么要学习 gekkio 当我们进行前端开发时,难免会遇到很多需要图形进行展示和交互的场景,而 gekkio 就是一款帮助开发者实现图形渲染和交互的 npm 包。

    3 年前
  • npm 包 react-network-info 使用教程

    在前端开发中,网络信息的获取是非常重要的一个环节,特别是在移动端浏览器中,网络情况时刻在变化,因此我们需要一个快速、准确地获取当前网络状态的工具。 在众多可供选择的 npm 包中,react-netw...

    3 年前
  • npm 包 gigs-adapter-remoteok 使用教程

    简介 gigs-adapter-remoteok 是一个可以获取 remoteok.io 上的招聘信息的 npm 包。 Remote OK 是一个聚焦于远程工作的职位招聘网站,提供了全职,兼职,实习等...

    3 年前
  • npm 包 gulp-env-modify 使用教程

    在前端开发中,使用 gulp 管理任务是很常见的。而在 gulp 的任务中,往往需要根据不同的环境变量来处理不同的配置,这时候就需要用到 npm 包 gulp-env-modify。

    3 年前
  • npm 包 faster-faster 使用教程

    简介 faster-faster 是一款基于 Node.js 的命令行工具,用于加速 JavaScript 项目的编译、构建和打包过程。它通过自动优化编译器的缓存机制、提高硬盘写入速度等手段,大大缩短...

    3 年前
  • npm包 map-map 使用教程

    map-map是一个非常有用的npm包,它可以帮助开发者快速地将一个嵌套的对象或数组中的每一个元素映射到一个新的值上。本篇文章将为大家提供详细的使用教程,帮助大家更好地掌握这个工具,并带来实际的应用案...

    3 年前
  • npm 包 star-evaluation 使用教程

    在前端开发过程中,我们经常需要使用评分组件来展示用户评价或者评分。而 star-evaluation 是一个简单易用的评分组件,可以方便地用在各种前端项目中。本篇文章介绍如何使用 star-evalu...

    3 年前
  • npm 包 just-rest-cookies 使用教程

    前言 JavaScript 是一门前端语言,在开发 web 应用时经常需要发送 HTTP 请求以获取或提交数据。Cookie 是在客户端存储用户信息的一种方式,而 just-rest-cookies ...

    3 年前
  • npm 包 @purtuga/web-components-polyfill-webpack-plugin 使用教程

    前言 @purtuga/web-components-polyfill-webpack-plugin 是一个适用于 Webpack 的插件,可以帮助开发者在旧版浏览器(如 IE11、Edge 等)中支...

    3 年前
  • npm 包 ah-swaggerclient-plugin 使用教程

    前言 随着互联网的发展,Web 开发在各行各业都得到了广泛的应用和重视。在这场浪潮中,前端技术成为了最受关注的技术领域之一,而我们今天要介绍的则是一款可以帮助前端工程师更好地编写接口文档的 npm 包...

    3 年前
  • npm 包 teletexthash 使用教程

    在前端开发中,常常需要给一些文本数据进行哈希处理,以便于快速比较和检索。而 npm 包 teletexthash 是一个轻量级的哈希函数库,具有快速、安全和可靠的特点,适用于各种文本数据的哈希处理。

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

    在前端开发中,经常需要管理页面的状态。为了方便地实现状态管理,开发者们经常会使用 React Hooks,但是 Hooks 的实现过程有时会比较繁琐。为了让开发者更加便捷地使用 Hooks,@topc...

    3 年前
  • npm 包 apigee-auth 使用教程

    介绍 v0.1.1 是一个以 Node.js 为基础的 npm 包,用于创建基于 Apigee Edge API 的认证 Token。它可以用于从 Apigee 获取访问令牌,并通过 OAuth 1....

    3 年前
  • npm 包 async-action-creator 使用教程

    async-action-creator 是一个可以简化 async Redux action 创建过程的 npm 包。它的主要作用是减少 Redux 中异步请求的代码量,从而使项目更加易于维护。

    3 年前

相关推荐

    暂无文章