npm 包 mongoose-plugin-soft-deleted 使用教程

阅读时长 7 分钟读完

介绍

mongoose-plugin-soft-deleted 是一个用于 mongoose 的软删除插件,它将所有删除操作转化为将被删除的文档的 deleted 字段设置为 true。这个插件可以使得我们在不失去数据的情况下,对被删除的文档进行一些排查和管理。

安装

在你的项目中使用 npm 进行安装:

使用

引入插件

首先,我们需要在与 mongoose 相关的文件中引入插件:

我们在引入插件时传入了一个配置参数 deletedAt,这个配置项表示我们是否要开启 deletedAt 字段,默认是 false

假如我们开启了 deletedAt,插件就会在插入一条被软删除的数据时自动加上 deletedAt 字段,如果不开启这个功能,则有可能在开启这个功能后,已经在数据库中的数据不会包含 deletedAt 这个字段。

在模型中使用插件

接下来,我们可以在具体的模型中使用插件:

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

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

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

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

这里的 YourSchema 就是你定义的模型,我们为它添加了 deleted 字段作为软删除标识,在模型定义之后,需要使用我们在全局引入的软删除插件加上它:

这里,我们使用了配置参数 deletedAt : true,开启了 deletedAt 字段,并表示所有被删除的文档都有这个字段。

硬删除数据

当需要进行硬删除时,你可以直接使用 mongoose 的 deleteOne() 方法:

软删除数据

当需要进行软删除时,插件将操作转化为将 deleted 字段设置为 true。这就意味着,软删除的数据还可以通过查询的方式查找,但是它们的 deleted 字段均为 true

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

恢复数据

软删除后,如果需要进行数据的恢复,我们可以通过将 deleted 字段设置为 false 来实现:

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

这里需要注意的是:这个设置只是单纯的将 deleted 字段设置为 false,并不能恢复被软删除的文档的原始数据。

示例代码

在这里,我们提供一个简单的使用示例代码:

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

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

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

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

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

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

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

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

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

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

结论

通过这篇文章,我们学习了使用 mongoose-plugin-soft-deleted 插件进行软删除的方法,并提供了详细的代码示例。软删除可以方便我们对被删除的文档进行管理和检查,同时也可以帮助我们保护数据的完整性。

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

纠错
反馈