Reputation: 1994
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 })
});
});
Upvotes: 0
Views: 75
Reputation: 2573
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 })
});
});
Upvotes: 1