Mongoose Delete 插件
功能
- 添加了
delete()
方法。 - 添加了
deleteById()
方法。 - 在documents上添加了
deleted
这个属性(Boolean) - 添加
deteledAt
属性用来保存删除的时间。 - 添加
deletedBy
属性来记录谁删除了document。 - 使用
restore
回复已经删除的文档。 - 批量删除和恢复。
- 可选择是否重写静态的方法(count, countDocuments, find, findOne, findOneAndUpdate, update, updateMany))
- 对于可重写的方法额外提供了两个方法:
methodDeleted
,methodWithDeleted
- 在删除时禁用模型的校验
- 可选择 在删除的fields创建索引
- 可选择是否禁用 $ne操作符 通过使用
{use$neOperator: false}
使用
mongoose中的删除操作有remove
,findByIdAndRemove
,findOneAndRemove
.这些方法都不会执行软删除
对于删除操作,要是用delete
和deleteById
方法来删除数据是软删除。
谁删除了数据。 添加 {deletedBy : true } link
重写方法
可选择重写所有或者指定的方法。
目的: 重写方法将排除掉删除的document,(删除的document都有deleted = true)
每个重写的方法都会有两个额外的方法。(methodDeleted
,methodWithDeleted
)
支持的可选重写方法。 ['count', 'countDocuments', 'find', 'findOne', 'findOneAndUpdate', 'update', 'updateMany', ]
以find
方法为例。
配置为
{
overrideMethods: ['find']
}
除了find
方法以外会有findDeleted
,findWithDeleted
。
- find 方法返回所有除了deleted=false的数据
- findDeleted 方法返回所有delted=true的数据
- findWithDeleted返回所有数据
删除时禁用model的校验
默认情况下,该插件开启校验。
Schema.plugin(mongoose_delete)
Schema.plugin(mongoose_delete,{
validateBeforeDelete: true
})
当validateBeforeDelete
设置为false,就不会校验
创建索引
PetSchema.plugin(mongoose_delete, { indexFields: 'all' });
// or
PetSchema.plugin(mongoose_delete, { indexFields: true });
对于deleted,deletedAt,deletedBy
三个字段都添加索引
// Index only specific fields
PetSchema.plugin(mongoose_delete, { indexFields: ['deleted', 'deletedBy'] });
// or
PetSchema.plugin(mongoose_delete, { indexFields: ['deletedAt'] });
对指定的字段添加索引。(指定也是在3者之间)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。