简介
npm 包 loopback-component-storage-gridfs2 是使用 LoopBack 构建的基于 MongoDB 的文件存储插件。它的作用是将数据库中的文件转化为不同的格式,并且存储在指定的目录中。从而可以方便的实现文件的读取、写入和删除。这篇文章将会介绍如何使用 npm 包 loopback-component-storage-gridfs2 实现文件的上传和下载。
安装
npm 包 loopback-component-storage-gridfs2 的安装非常简单,只需在项目根目录中输入以下命令就可以了:
npm install loopback-component-storage-gridfs2 --save
使用
使用 npm 包 loopback-component-storage-gridfs2 实现文件的上传和下载,需要创建一个继承自 loopback-datasource-juggler 中 DataSource 的子类,并指定其数据库和集合名。以下是一个示例:
-- -------------------- ---- ------- ----- ------------- - ------------------------------------------------------------ -------------- - ---------------- - ----- -- - ------------------------------ ----- ------- - --- --------------- -------------- ---------------- --------- -------------------------- --------------- ------- --- ----------------------- - ----------- ------------------------------ ------- ----- ------- ---- --- ----------------------------- ----- ----- -- - -- --------------- --- ------ -- ------------------------ --- -------- - ----- ----- - ------------------------------- ----- ------- - --------------------------- ----- --------- - ----------------------------- ----- ------- - - ------ ------ -------- -------- ---------- --------- -- ----------------------- ----------- -------- --- ----- ----- -- - -- ----- - ---------- ------- - --------------- - ---------------- ------- --- - ---- -- --------------- --- -------- -- ------------------------ --- -------- - ----- ----- - ------------------------------- ----- ------- - --------------------------- ----- --------- - ----------------------------- ----- ------ - ---------------------- ----- ------- - - ------ ------ -------- -------- ---------- ---------- ------- ------ -- ----------------------- --- ----- -- - -- ----- - ---------- ------- - ---------- - - -------- ---- -- ------- --- - ---- - ------- - --- --
上述代码中首先引入了 npm 包 loopback-component-storage-gridfs2 的 StorageGridFS 类,然后创建了一个模型为 "Storage" 的 LoopBack 应用程序 DataSource 子类,该子类的基础是 myDatabase。在 LoopBack 微服务启动后,执行上传和删除文件的操作将会在 myDatabase 中创建一个名为 files 的集合。
接下来的代码中,remotes() 方法用于管理远程过程调用方法(Remote Method)的执行顺序。在该示例中,使用了 before() 方法,其作用是在执行某个远程过程之前插入一个回调函数。使用 express 的 req 和 res 对象,ctx 对象的方法是远程过程调用的上下文。在 before() 回调函数中,在做 POST 请求并且 container 名称是 "files" 时,则会执行上传文件的操作,如果执行的是 DELETE 请求并且 container 名称是 "files" 时,则会执行删除文件的操作。其他情况则放行,继续执行下一个远程过程。
在上传文件的操作中,为了安全起见,添加了 accessToken、ownerId、ownerType 三个参数,避免未授权的上传操作。在上传文件之后,返回的 file 对象中包含了文件 ID 和 URL 等必要的信息。
在删除文件的操作中,同样加入了 accessToken、ownerId 和 ownerType 参数,删除时需要指定 fileId。
示例代码
以下是一个完整的示例代码,可以很方便地上传和下载文件。
-- -------------------- ---- ------- ----- ------ - ----------------------------------------------------- ----- -- - -------------- -------------- - ------------- - -------------------------------------------- ------------- ---- - ----- ---- - --------------- ----- -------- - ------------------ -- ------- ----- --------- - --------------------- ----- ------- - -------- ---- --------------------------------- --- ----- ---------- - ----------------------------------------- ------------------------- ----------- - ----- ----- --------- -------- -- --- --------------- ------- - -- ------- - -------------- ------- - ----------------- --- --- ---------------------------------------------- ------------- ---- - ----- -- - ----------------- ----- --------- - --------------------- ----- ------- - -------- ---- --------------------------------- --- ----- ----------- - ------------------------------------- - ---- --------------------------- --- --- ------------ --------------- ------- - -- ------- - -------------- ------- - ----------------------------- - --- - ----- --------- --- --- --- --
结语
本文通过对 npm 包 loopback-component-storage-gridfs2 的介绍,让读者掌握了如何使用这个插件来实现 MongoDB 的文件存储。希望本文的内容可以对初学者有所启示,也希望专业人士能够通过本文加深对 npm 包 loopback-component-storage-gridfs2 的理解和掌握。这将为日后的开发工作打下坚实的基础。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600566aa81e8991b448e2e32