Mongoose 中如何在文档中保存二进制数据?

阅读时长 4 分钟读完

Mongoose 是一个 Node.js 上的 MongoDB 对象建模库。它能够为 Node.js 应用程序提供 MongoDB 进行数据保存、查询、删除、更新等操作的简单而强大的 API 接口,可以快速地开发 web 应用程序和 API。

在某些场景下,我们需要在 Mongoose 的文档中保存二进制数据。本文将介绍如何在 Mongoose 文档中保存二进制数据,并提供示例代码以帮助读者快速上手。

保存图片二进制数据

在 Mongoose 中保存图片二进制数据需要在 schema 中声明 Buffer 类型,例如:

如上代码所示,imageSchema 中的 data 字段声明为 Buffer 类型,即可保存二进制数据。

接下来,我们将数据存储到 imageSchema 中:

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

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

示例代码中,我们先使用 fs.readFileSync 读取图片的二进制数据并保存到 data 变量中,然后创建一个 ImageModel 实例,传递了 name 和 data 两个字段,最后调用 save() 方法将数据保存到数据库中。

保存音频或视频二进制数据

在 Mongoose 中保存音频或视频二进制数据同样需要在 schema 中声明 Buffer 类型:

示例代码中的 mediaSchema 中,data 字段依旧是 Buffer 类型,同时声明了 contentType 字段,用于保存媒体文件的 MIME 类型。

再看如何将数据存储到 mediaSchema 中:

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

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

从数据库中读取二进制数据

如果我们需要从数据库中读取保存了二进制数据的文档,可以使用 Buffer 类型的 toString() 方法将其转换成字符串输出,例如:

示例代码中使用了 findOne() 方法查询满足条件的文档,并使用 data.toString('base64') 将二进制数据转换成 base64 编码字符串输出到控制台。

总结

本文介绍了如何在 Mongoose 中保存二进制数据,并提供了示例代码帮助读者快速上手。在实际开发中,我们可以根据业务需求自行调整代码,并使用更加高效的方式进行存储和读取。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6499657148841e989466bb97

纠错
反馈