{"id":21521081,"url":"https://github.com/weisjohn/mongoose-deleted","last_synced_at":"2025-04-09T22:21:49.158Z","repository":{"id":35286881,"uuid":"39547846","full_name":"weisjohn/mongoose-deleted","owner":"weisjohn","description":"a soft-delete implementation utilizing mongoose middleware","archived":false,"fork":false,"pushed_at":"2015-12-14T22:53:45.000Z","size":15,"stargazers_count":8,"open_issues_count":2,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T00:15:10.998Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/mongoose-deleted","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/weisjohn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-23T05:37:55.000Z","updated_at":"2024-06-22T02:57:32.000Z","dependencies_parsed_at":"2022-09-18T01:11:44.028Z","dependency_job_id":null,"html_url":"https://github.com/weisjohn/mongoose-deleted","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weisjohn%2Fmongoose-deleted","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weisjohn%2Fmongoose-deleted/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weisjohn%2Fmongoose-deleted/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weisjohn%2Fmongoose-deleted/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/weisjohn","download_url":"https://codeload.github.com/weisjohn/mongoose-deleted/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247767224,"owners_count":20992545,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-24T01:05:42.127Z","updated_at":"2025-04-09T22:21:49.133Z","avatar_url":"https://github.com/weisjohn.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mongoose-deleted\n\na soft-delete implementation utilizing mongoose middleware\n\n### usage\n\n```javascript\nvar mongoose = require('mongoose');\nvar mongoose_deleted = require('mongoose-deleted');\nvar user = new mongoose.Schema({ name: String });\nmongoose_deleted(user);\nuser = mongoose.model('user', user);\n\nvar name = \"John Q Public\";\nvar user1 = new user({ name : name });\n\nuser1.save(function() {\n    user.findOne({ name : name }, function(err, doc) {\n        if (err || !doc) console.log('failed to find document');\n        doc.delete(function(err) {\n            user.findOne({ name: name }, function() {\n                if (!doc) console.log('soft delete worked');\n            })\n        });\n    });\n});\n```\n\n### documents\n\n`mongoose-deleted` utilizes mongoose middleware to transparently modify queries to select for documents that are not `{ deleted: true }`. Documents that are `.delete()`-ed will not be returned. To explicitly return documents that are deleted:\n\n```javascript\nschema.find({ deleted: true }, function(err, docs) {\n    // ...\n});\n```\n\nAdditionally, the `deleted` boolean property is set by default to not be selected/returned on a document.\n\nTo have `deleted` normally returned:\n\n```javascript\nschema.plugin(mongoose_deleted, { select : true });\n```\n\nTo have the `deleted` property included, [in addition](http://mongoosejs.com/docs/api.html#query_Query-select) to the normal properties:\n\n```javascript\nschema.findOne(query).select('+deleted').exec(function(err, doc) {\n    console.log(doc.deleted);\n});\n```\n\nOr, to retrieve the `deleted` property only on a particular query, manually select for it:\n\n```javascript\nschema.findOne({}, { deleted : 1 }, function(err, doc) {\n    console.log(doc.deleted);\n});\n```\n\n\n\n### toJSON\n\nBy default, `mongoose-deleted` hides the `deleted` property on `doc.toJSON()`. This is configurable in the options:\n\n```javascript\nschema.plugin(mongoose_deleted, { toJSON : true });\n```\n\nThis can be overriden in a `toJSON()` call:\n\n```javascript\nvar json = doc.toJSON({ deleted : true });\n```\n\n\n### history\n\n`mongoose-deleted` allows an optional integration with [`mongoose-history-log`](https://www.npmjs.com/package/mongoose-history-log) by passing in the options:\n\n```javascript\nmongoose_deleted(schema, { history: true });\n```\n\nThis will automatically insert a `{ status: 'deleted' }` object with the current time.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweisjohn%2Fmongoose-deleted","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweisjohn%2Fmongoose-deleted","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweisjohn%2Fmongoose-deleted/lists"}