ms

mongoose-softdelete

Soft delete MongoDB documents

Showing:

Popularity

Downloads/wk

309

GitHub Stars

34

Maintenance

Last Commit

5mos ago

Contributors

3

Package

Dependencies

0

Size (min+gzip)

0.3KB

License

MIT

Type Definitions

Built-In

Tree-Shakeable

No?

Categories

Readme

Build Status

Mongoose Soft Delete Plugin

Mongoose plugin that enables soft deletion of Models/Documents.

This plugin is based on the work of Yi.

What's Different

In the original plugin, models were deleted with a date reference only. This version takes that and uses a Boolean flag to to mark models deleted/restored. Adds deletedAt field to record when a document was deleted. Additionally, it removes a lot of overhead from the original code and doesn't use Coffeescript.

Also checkout Mongoose Delete by Sanel Deljkic.

License

This plugin is licensed under the MIT license and can ve viewed in the LICENSE file.

Installation

Install using npm

npm install mongoose-softdelete --save

Tests

IMPORTANT: You need to have MongoDB running to run tests

npm test

Usage

models/test.js

const mongoose = require('mongoose'),
    Schema = mongoose.Schema,
    soft_delete = require('mongoose-softdelete');

const TestSchema = new Schema({
  somefield: { type: String, default: 'Hello World!' },
});

TestSchema.plugin(soft_delete);

mongoose.model('Test', TestSchema);

controllers/test.js

const Test = mongoose.model('Test');
const test = new Test();

test.softdelete(function (err, newTest) {
  if (err) {
    callback(err);
  }
  callback(null, newTest);
});

test.restore(function (err, newTest) {
  if (err) {
    callback(err);
  }
  callback(null, newTest);
});

// chainable query method
// defaults to true unless specified
Test.find().isDeleted(false).exec();

Typescript

import { Schema, model } from 'mongoose';
import softdelete, { ISoftDeletedDocument } from 'mongoose-softdelete';

interface ITestDocument extends ISoftDeletedDocument {
    somefield: string;
}

const TestSchema = new Schema({
    somefield: { type: String, default: 'Hello World!' }
});

TestSchema.plugin(softdelete);

const Test = model<ITestDocument>('Test', TestSchema);
const test1 = new Test();

test1.softdelete(function (err, newTest: ITestDocument) {
    // ...
});

// chainable query method
// defaults to true unless specified
(Test.find({}) as unknown as ISoftDeletedDocumentQuery).isDeleted(false)

Built with love in Dhaka, Bangladesh by Riyadh Al Nur

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial