https://github.com/muhammadrifat/soft-deleting-mongoose
This is the simple, light-weight soft deleting package for Mongodb using mongoose ODM.
https://github.com/muhammadrifat/soft-deleting-mongoose
mongodb mongoose npm-package soft-delete
Last synced: 3 months ago
JSON representation
This is the simple, light-weight soft deleting package for Mongodb using mongoose ODM.
- Host: GitHub
- URL: https://github.com/muhammadrifat/soft-deleting-mongoose
- Owner: MuhammadRifat
- Created: 2023-05-18T19:40:47.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2023-07-26T17:52:38.000Z (almost 3 years ago)
- Last Synced: 2025-03-27T13:07:26.904Z (over 1 year ago)
- Topics: mongodb, mongoose, npm-package, soft-delete
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/soft-deleting-mongoose
- Size: 24.4 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# soft-deleting-mongoose
This is a simple, easy-to-understand soft deleting package for MongoDB using Mongoose ODM. This package gives you all functionality to soft delete any Mongodb document. So let's start soft deleting...
## Installation
`npm install soft-deleting-mongoose`
## Usage
#### Defining schema
Firstly import **MongooseSchema** and create a schema.
```js
const userSchema = new MongooseSchema({
name: {
type: String,
required: true
},
email: {
type: String,
required: true,
},
role: {
type: String,
default: "user"
},
password: String
});
```
#### Creating a model
```js
const User = mongoose.model('User', userSchema);
```
#### Delete a user by using soft deleting
```js
app.delete("/user/:_id", async (req, res, next) => {
try {
const _id = req.params._id;
const user = await User.softDeleteById(_id);
return res.status(200).json({ success: true, data: user });
} catch (error) {
next(error);
}
});
```
### Provided the following query helpers for soft deleting.
- .notDeleted()
- .onlyDeleted()
- .withDeleted()
### Provided the following static functions for soft deleting.
- Model.softDelete(query)
- Model.softDeleteById(_id)
- Model.restoreById(_id)
- Model.restore(query)
- Model.restoreAll()
- Model.forceDeleteById(_id)
- Model.forceDelete(query)
## Usage Example of query helpers
In the above, I have declared a model named **User**. Now I am giving examples using the **User** model.
#### .notDeleted()
- Get not deleted documents
```js
User.find({}).notDeleted();
```
#### .onlyDeleted()
- Get only deleted documents
```js
User.find({}).onlyDeleted();
```
#### .withDeleted()
- Get both types of documents (deleted + not deleted)
```js
User.find({}).withDeleted();
```
## Usage Example of static functions
In the above, I have declared a model named **User**. Now I am giving examples using the **User** model.
#### Model.softDelete(query)
- Soft delete the matched documents by query
```js
User.softDelete({ role: "user" });
```
#### Model.softDeleteById(_id)
- Soft delete the document by _id
```js
const _id = "6405d153a208cbfd7b88b0c5";
User.softDeleteById(_id);
```
#### Model.restoreById(_id)
- Restore the deleted document by _id
```js
const _id = "6405d153a208cbfd7b88b0c5";
User.restoreById(_id);
```
#### Model.restore(query)
- Restore the matched deleted documents by query
```js
const _id = "6405d153a208cbfd7b88b0c5";
User.restoreById(_id);
```
#### Model.restoreAll()
- Restore all deleted documents
```js
User.restoreAll();
```
#### Model.forceDeleteById(_id)
- Permanently delete a document by _id
```js
const _id = "6405d153a208cbfd7b88b0c5";
User.forceDeleteById(_id);
```
#### Model.forceDelete(query)
- Permanently delete the matched documents by query
```js
User.forceDeleteById({ role: "sub-admin" });
```
## Usage Example in TypeScript
#### Creating a model
```js
const User = mongoose.model>>('User', userSchema);
```
Heder, **IUserDoc** is the interface of user, **Model** is imported from mongoose, and **IQueryHelpers** is imported from **soft-deleting-mongoose** package.