在开发中,数据的删除是非常常见的操作。但是,传统的软删除方式是在数据库中进行标记,在查询数据时根据标记进行筛选,而不是真正的删除。这种方式在多数情况下可以满足需求,但如果要彻底删除数据则会变得非常困难。因此,mf-mongoose-softdelete 这个 npm 包应运而生。
什么是 mf-mongoose-softdelete
mf-mongoose-softdelete 是一个基于 Mongoose 的软删除插件,它支持彻底删除数据、修改删除标记、查询时自动过滤删除的数据等操作。使用该插件可以大大简化软删除操作的代码实现。
安装 mf-mongoose-softdelete
在 Node.js 项目中使用以上包很容易,只需要在项目中运行以下命令:
npm install mf-mongoose-softdelete --save
使用 mf-mongoose-softdelete
在 Mongoose 模型中使用 mf-mongoose-softdelete 插件非常简单,只需要对模型进行一些简单的配置即可。
引入模块
const mongoose = require('mongoose'); const softDelete = require('mf-mongoose-softdelete');
定义模型
-- -------------------- ---- ------- ----- ------ - ---------------- ----- ---------- - --- -------- ----- ------- ---- ------- ----------- - ----- -------- -------- ----- - --- ----------------------------- - ---------- ----- ---------- ----- ---------------- ---- --- -------------- - ---------------------- ------------
解释:
- deletedAt:标记删除的时间,在查询时自动过滤掉软删除的数据。
- deletedBy:记录删除的用户,非必须。可增加删除操作的可追溯性。
- overrideMethods:覆盖 Mongoose 自带的 delete 方法,使之变成软删除。如果该项为 false,则需要使用自定义方法进行软删除操作。
执行软删除
User.delete({ _id: 'xxx' }, callback);
代码执行过程中,若软删除成功,则可以从数据库中彻底删除该条数据。
查询数据
查询时,默认会自动过滤软删除的数据,即查询结果只包含 is_deleted
为 false
的数据,也可以设置参数显示软删除过的数据。
User.find().exec(function(err, users) { console.log(users); });
导出被软删除的数据
将参数 deleted
设置为 true 即可导出被软删除的数据。
User.find({}).setOptions({ deleted: true }).exec((error, deleteUsers) => { console.log(deleteUsers); });
总结
mf-mongoose-softdelete 的使用方式非常简单,对于软删除操作来说是非常方便的。使用该插件可以很好地帮助开发者实现软删除操作,并且也很容易定位软删除的操作者。通过本篇文章,希望读者能快速学习 mf-mongoose-softdelete 的使用,以及在实际项目中对数据进行操作时可以更加灵活的使用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055ead81e8991b448dc264