npm 包 loopback-component-storage-gridfs2 使用教程

阅读时长 8 分钟读完

简介

npm 包 loopback-component-storage-gridfs2 是使用 LoopBack 构建的基于 MongoDB 的文件存储插件。它的作用是将数据库中的文件转化为不同的格式,并且存储在指定的目录中。从而可以方便的实现文件的读取、写入和删除。这篇文章将会介绍如何使用 npm 包 loopback-component-storage-gridfs2 实现文件的上传和下载。

安装

npm 包 loopback-component-storage-gridfs2 的安装非常简单,只需在项目根目录中输入以下命令就可以了:

使用

使用 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

纠错
反馈