npm 包 @kopjra/mongoose-crate-s3 使用教程

简介

@kopjra/mongoose-crate-s3 是一款 Node.js 模块,它提供了将文件存储到 Amazon S3 服务的功能。在使用 @kopjra/mongoose-crate-s3 时,我们可以通过二进制流的方式将文件上传至 S3 服务,并且可以在 mongoose 模型中轻松配置以保存文件的 URL 等信息。

安装

本模块依赖于 mongooseaws-sdk ,在安装之前需要先确保这两个模块已经被安装在你的项目中。

执行下面的命令即可:

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

使用

配置

首先需要在 mongoose 上使用插件的方式引入 @kopjra/mongoose-crate-s3

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

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

其中:

  • accessKeyIdsecretAccessKey 是访问 S3 服务的 IAM 用户的凭证信息。
  • regionbucket 是 S3 服务的区域和存储桶名称。

定义模型

考虑到需要在模型中存储文件的 URL,我们需要在模型中定义相应的字段,同时我们需要在 schema 上使用 file 字段:

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

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

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

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

在上面的代码中:

  • filefiles 字段都是使用了 FileAttributes 来声明,它们分别表示单个文件和多个文件的属性信息。
  • mySchema.plugin 传入两个参数:插件和配置,其中配置对象的 myFile 字段指定文件的属性名。

API

上面的配置完成之后,我们就可以在模型中使用 @kopjra/mongoose-crate-s3 提供的 API 了。

file.createReadStream(): ReadableStream

返回一个用于读取文件二进制流的 ReadableStream

file.openReadStream(): Promise

打开一个用于读取文件二进制流的 ReadableStream

file.uploadStream(): WritableStream

返回一个用于上传文件的 WritableStream

file.openUploadStream(): Promise

打开一个用于上传文件的 WritableStream

saveFile(file: Buffer | string, options: Object = {}): Promise<FileDocument>

保存一个文件。

在使用 saveFile 方法时,只需要将文件的二进制数据或文件路径传入即可,方法会自动判断参数类型并执行相应的操作。

同时,options 参数用于控制保存文件的一些附加信息,它的属性如下:

  • filename:指定文件名称。
  • mimetype:指定文件 MIME 类型。
  • expires:指定文件过期时间。

removeFile(options: Object = {}): Promise<FileDocument>

删除一个文件。

在使用 removeFile 方法时,可以通过 options 参数来获取相关的附加信息,比如文件名称等。

代码示例

保存文件

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

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

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

读取文件

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

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

总结

在本文中,我们详细介绍了 @kopjra/mongoose-crate-s3 的使用,包括配置、模型定义、API 和代码示例等内容,希望本文能为读者提供一些指导意义,帮助大家更好地使用该模块。

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


猜你喜欢

  • npm 包 ordinal-suffix-of 使用教程

    在 web 开发中,我们经常需要将数字转换为序数。这时候,我们可以使用 npm 包 ordinal-suffix-of 轻松地完成这个任务。ordinal-suffix-of 可以帮助我们将数字转换为...

    4 年前
  • npm 包 @jedmao/get 使用教程

    介绍 Node.js 是一个流行的服务器端编程语言,它具有强大的模块化功能,其中一个显著的特点是它的包管理工具 npm。npm 允许我们方便地安装、更新和分享代码库,这是前端和后端开发者必不可少的工具...

    4 年前
  • npm 包 npm-switch 使用教程

    前言 当我们在进行前端开发时,经常需要切换项目中所用的 npm 包版本,为此我们需要在 package.json 中手动修改版本号并执行 npm install 来安装对应版本的依赖。

    4 年前
  • npm 包 @bbc/gel-constants 使用教程

    前言 在前端开发中,样式的一致性十分重要,而 BBC Global Experience Language (GEL) 是 BBC 国际化的设计语言。为了让开发者更加便捷地使用 GEL,BBC 团队开...

    4 年前
  • npm 包 @bbc/gel-foundations-styled-components 使用教程

    介绍 在前端项目中,使用样式库能够节约时间和资源,提升开发效率。而 @bbc/gel-foundations-styled-components 是 BBC 设计系统 GEL 的一部分,是基于 sty...

    4 年前
  • npm 包 dir-css-inliner 使用教程

    在前端开发中,样式表的引入是一个必不可少的环节。但是,在一些场景下,我们需要将 CSS 样式直接添加到 HTML 标签的 style 属性中,这时候我们可以使用 npm 包 dir-css-inlin...

    4 年前
  • npm 包 @mooper/plant-parse 使用教程

    开发中使用流程图是很常见的。自动化处理流程图就是一个很好的选择,本文将介绍一个 NPM 包 @mooper/plant-parse,它将帮助你快速生成流程图。 什么是 @mooper/plant-pa...

    4 年前
  • npm 包 forked-react-select 使用教程

    在前端开发中,我们常常需要使用到下拉选择框组件。而 forked-react-select 是一个强大且灵活的下拉选择框组件,它基于 ReactJS 和 react-select 实现,提供了许多扩展...

    4 年前
  • npm 包 njk-html-loader 使用教程

    前言 在前端开发中,我们常常需要处理一些数据,并将其显示在页面中。而对于较为固定的界面结构,我们可以使用模板引擎来方便地生成 HTML 页面。njk-html-loader 就是一款能够将 Nunju...

    4 年前
  • npm包json-schema-to-type使用教程

    随着前端开发的发展,越来越多的项目需要前后端交互,而json是前后端通信最常用的数据格式之一,然而json数据通常不提供可读的文档以及类型检查,这就给前端开发中的错误处理和数据验证带来了很多困难。

    4 年前
  • npm 包 vtex-cms-sauce 使用教程

    vtex-cms-sauce 是一个基于 Node.js 平台的 npm 包,是一个能够快速构建高效可维护的 VTEX CMS 安装包的工具。本文将详细介绍 vtex-cms-sauce 的使用教程,...

    4 年前
  • npm 包 load-dynamic-module 使用教程

    在前端开发中,我们时常需要在项目中引入外部的模块或库。在以前,我们需要手动下载,然后在项目中使用。但现在,我们可以使用 npm 包管理器来更加方便地管理项目中的依赖。

    4 年前
  • npm 包 prismjs2 使用教程

    在前端开发中,代码高亮是一个非常重要的需求。prismjs2 是一个使用简便的 npm 包,可以轻松实现对代码的高亮显示。本篇教程将介绍如何使用这个 npm 包,并附带详细的示例代码。

    4 年前
  • npm 包 payu-latam-node 使用教程

    前言 npm 是目前前端最常用的包管理工具之一,它能够帮助我们快速、便捷地获取代码包,从而提高我们的开发效率。在日常的开发中,我们常常需要使用一些第三方工具包来完成我们的项目。

    4 年前
  • npm 包 nanodraggable 使用教程

    简介 npm 是 Node.js 的包管理器,可以方便地将第三方库引入项目中来。nanodraggable 是一款基于鼠标拖拽实现的轻量级 JavaScript 插件,可用于实现拖动效果。

    4 年前
  • 使用 npm 包 prolific.tcp 建立 TCP 连接

    在前端开发中,建立 TCP 连接是必不可少的一步。虽然 JavaScript 并不能自己处理 TCP 连接,但是通过 npm 包可以轻松地实现 TCP 连接。本文介绍如何使用 npm 包 prolif...

    4 年前
  • npm 包 sepporadise 使用教程

    背景 在前端开发中,我们不可避免地需要引入一些外部库来简化开发和提高效率。而 npm 是前端开发中最常用的包管理器之一。 sepporadise 是一个 npm 包,它是一个前端组件库,提供了一组易于...

    4 年前
  • npm 包 sails-graphql-2 使用教程

    GraphQL 是一种用于 API 的查询语言,通过它可以轻松地定义数据的查询和变更操作。而Sails-graphql-2 是一个用于在Sails中使用GraphQL 的 npm 包。

    4 年前
  • npm 包 swtc-nativescript-brorand 使用教程

    前言 在前端开发工作中,我们经常需要使用 npm 包来实现各种功能和提高开发效率。swtc-nativescript-brorand 包就是一个优秀的 npm 包,它能够生成随机数和随机字符串,可以应...

    4 年前
  • npm 包 oslc-client 使用教程

    什么是 OSLC? OSLC(Open Services for Lifecycle Collaboration)是一种面向工程开发领域的开放式服务。通过 OSLC,不同的工程工具可以融合,实现更好的...

    4 年前

相关推荐

    暂无文章