0

I'm implementing user recovery system using NodeJS and mongoose. I need insert deleted user complains into deleted users collection. How to do that? when i delete user from collection that particular data should insert another collection name deleted users. It simmiler to user recovery system. My Module deletedUser.js

const mongoose = require('mongoose')

/**
 * Data model for deletedUser.
 */

const Schema = mongoose.Schema
const deletedUserSchema = new Schema({
    _id: {
        type: mongoose.Schema.Types.ObjectId,
        createIndex: true,
        required: true,
        auto: true
    },
    email: {
        type: String,
        required: true,
        unique: true,
        match: /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/
    },
    password: String,
    username: String,
    firstname: String,
    lastname: String,
    telephone: String,

    //address
    line1: String,
    line2: String,
    line3: String,

    nic: String,

    broadcasts: [],
    selling: [],
    complains: [],
    bookmarks: [],
    sellerReply: [],
    finalized: [],

    overallrate: Number,
    ratings: [],

    profileImage: String,
    replying:[],

    purchaseHistory: [],
    salesHistory: [],
    latestLog: Date,
    
    longitude: Number,
    latitude: Number,
    // expire_at: {type: Date, default: Date.now, expires: 3600*24*100}

})
module.exports = mongoose.model('deletedUser', deletedUserSchema, 'deletedUser')

And this is my attempts so far

// save deleted user data
router.post('/delete/:Id', async (req, res) => {
    const selectedUser = await User.findById(req.params.Id);
    // const deleteduser = new deletedUser({})
    // res.json(selectedUser._id);
    let testdata = [];
    // selectedUser.complains=this.testdata;
    console.log("When deleted"+selectedUser.complains)
    const deleteduser = new deletedUser({
        _id: selectedUser._id,
        email: selectedUser.email,
        password: selectedUser.password,
        username: selectedUser.username,
        firstname: selectedUser.firstname,
        lastname: selectedUser.lastname,
        telephone: selectedUser.telephone,
        line1: selectedUser.line1,
        line2: selectedUser.line2,
        line3: selectedUser.line3,
        nic: selectedUser.nic,
        broadcasts: selectedUser.broadcasts,
        selling: selectedUser.selling,
        complains: testdata.push(selectedUser.complains),
        bookmarks: selectedUser.bookmarks,
        sellerReply: selectedUser.sellerReply,
        finalized: selectedUser.finalized,
        overallrate: selectedUser.overallrate,
        ratings: selectedUser.ratings,
        profileImage: selectedUser.profileImage,
        replying: selectedUser.replying,
        purchaseHistory: selectedUser.purchaseHistory,
        salesHistory: selectedUser.salesHistory,
        latestLog: selectedUser.latestLog,
        longitude: selectedUser.longitude,
        latitude: selectedUser.latitude

    });
    deleteduser.save().then(data => {
        res.json(data);
    }).catch(err => {
        res.json({ message: err })
    });

});

1 Answer 1

1

The current approach you have seems pretty okay to me, however, you can reduce the code involved with document.toObject method:

router.post('/delete/:Id', async (req, res) => {
  const selectedUser = await User.findById(req.params.Id);

  console.log("When deleted"+selectedUser.complains)

  // use toObject to convert the user model into a normal javascript object
  const deleteduser = new deletedUser(selectedUser.toObject());
  deleteduser.save().then(data => {
      res.json(data);
  }).catch(err => {
      res.json({ message: err })
  });

});
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.