soft-delete-plugin-mongoose
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.15 • Public • Published

    Welcome to soft-delete-plugin-mongoose 👋

    Version Documentation Maintenance License: MIT

    a mongoose plugin that allows you to soft delete documents and restore them in MongoDB (for JS & TS)

    • Soft delete your MongoDB documents and restore them

    • JS and TS

    🏠 Homepage

    Install

    npm install soft-delete-plugin-mongoose

    How It Works

    Javascript Version

    const mongoose = require('mongoose');
    const { softDeletePlugin } = require('soft-delete-plugin-mongoose');
    const Schema = mongoose.Schema;
    
    const TestSchema = new Schema({
        name: String,
        lastName: String
    });
    
    TestSchema.plugin(softDeletePlugin);
    const Test =  mongoose.model("Test", TestSchema);
    
    const test = new Test({name: 'hello', lastName: "world"});
    
    /*** returns an object containing the number of softDeleted elements ***/
    /***
        {deleted: number} 
    ***/
    /***
        the argument options is optional
    ***/
    const options = { validateBeforeSave: false };
    const deleted = await Test.softDelete({ _id: test._id, name: test.name }, options);
    /** 
     const deleted = await Test.softDelete({ _id: test._id, name: test.name }); is also valid
    **/
    
    /*** returns an object containing the number of restored elements ***/
    /***
        {restored: number} 
    ***/
    const restored = await Test.restore({ _id: test._id, name: test.name });
    
    /*** returns all deleted elements ***/
    const deletedElements = await Test.findDeleted();
    
    /*** returns all available elements (not deleted) ***/
    const availableElements = await Test.find();
    
    /*** counts all available elements (not deleted) ***/
    const countAvailable = await Test.count();
    
    /*** findById returns the document whether deleted or not  ***/

    Typescript Version

    import * as mongoose from 'mongoose';
    import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose';
    
    interface Test extends mongoose.Document {
        name: string;
        lastName: string;
    }
    
    const TestSchema = new mongoose.Schema({
        name: String,
        lastName: String
    });
    TestSchema.plugin(softDeletePlugin);
    // two different ways of implementing model depending on technology used
    // 1st way
    const testModel = mongoose.model<Test, SoftDeleteModel<Test>>('Test', TestSchema);
    
    //2nd way (nestjs way)
    constructor(@InjectModel('Test') private readonly testModel: SoftDeleteModel<Test>) {}
    
    const test = await new this.testModel({name: 'hello', lastName: 'world'});
    
    /*** returns an object containing the number of softDeleted elements ***/
    /***
        {deleted: number} 
    ***/
    /***
        the argument options is optional
    ***/
    const options = { validateBeforeSave: false };
    const deleted = await Test.softDelete({ _id: test._id, name: test.name }, options);
    /** 
     const deleted = await Test.softDelete({ _id: test._id, name: test.name }); is also valid
    **/
    
    /*** returns an object containing the number of restored elements ***/
    /***
        {restored: number} 
    ***/
    const restored = await this.testModel.restore({ _id: test._id, name: test.name });
    
    /*** returns all deleted elements ***/
    const deletedElements = await this.testModel.findDeleted();
    
    /*** returns all available elements (not deleted) ***/
    const availableElements = await this.testModel.find();
    
    /*** counts all available elements (not deleted) ***/
    const countAvailable = await Test.count();
    
    /*** findById returns the document whether deleted or not  ***/

    Author

    👤 Nour

    🤝 Contributing

    Contributions, issues and feature requests are welcome!
    Feel free to check issues page. You can also take a look at the contributing guide.

    Show your support

    Give a STAR if this project helped you!

    📝 License

    • Copyright © 2021 Nour.
    • This project is MIT licensed.

    This README was generated with by readme-md-generator

    Install

    npm i soft-delete-plugin-mongoose

    DownloadsWeekly Downloads

    78

    Version

    1.0.15

    License

    MIT

    Unpacked Size

    17 kB

    Total Files

    9

    Last publish

    Collaborators

    • nourkaroui