Home > Net >  How to disable/inactive the data in mongoDB database instead of delete using nodejs
How to disable/inactive the data in mongoDB database instead of delete using nodejs

Time:11-03

when I hit the delete method in postman I need to disable the data in MongoDB instead of completely delete. how to do that?

 router.delete("/admin/delete_profile/:id", async (req, res) => {
  try {
    await SomeModel.findByIdAndDelete(req.params.id.trim());
    return send(res, RESPONSE.SUCCESS);
  } catch (err) {
   // res.status(404).send(err.message);
    return send(res, RESPONSE.UNKNOWN_ERROR);
  }
});

schema.js

const { json } = require("body-parser");
const mongoose = require("mongoose");

const Schema = mongoose.Schema;

const SomeModelSchema = new Schema({
  first_name: {
    type: String,
    required: true,
  },

  last_name: {
    type: String,
    required: true,
  },

  image: {
    data: Buffer,
    type: String,
    required: true,
  },
});

module.exports = mongoose.model("SomeModel", SomeModelSchema);

CodePudding user response:

You can keep a key like isActive:true in your database for soft delete purpose.When you hit delete api you can simply change this key to false.In this way you can differentiate this document from others and when you want list you can check for documents with isActive:true in your query.

CodePudding user response:

Actually, the approach suggested by @PawanYadav is a good one in my opinion.
Declare a Boolean flag isActive in your Schema (default to true):

const SomeModelSchema = new Schema({
  first_name: {
    type: String,
    required: true,
  },
  last_name: {
    type: String,
    required: true,
  },
  image: {
    data: Buffer,
    type: String,
    required: true,
  },
  isActive: {
    type: Boolean,
    default: true,
  }
});

And use findByIdAndUpdate to set the flag to false to disable the data:

try {
    await SomeModel.findByIdAndUpdate(req.params.id.trim(), {
      isActive: false,
    });
    return send(res, RESPONSE.SUCCESS);
  } catch (err) {
    // res.status(404).send(err.message);
    return send(res, RESPONSE.UNKNOWN_ERROR);
  }
  • Related