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

阅读时长 6 分钟读完

简介

@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

纠错
反馈