I'm using Mongoose and I want to remove the _id
property from my Mongoose instance before I send the JSON response to the client.
Example:
var ui = _.clone(userInvite);
delete ui["_id"];
console.log(JSON.stringify(ui)); //still has "_id" property, why?
The previous didn't work.
However, if I do:
var ui = JSON.parse(JSON.stringify(userInvite)); //poor man's clone
delete ui["_id"];
console.log(JSON.stringify(ui)); //"_id" is gone! it works!
I don't understand why calling delete
on a cloned object using Underscore doesn't work, but if I do the hacky JSON.string/JSON.parse, it works.
Any thoughts on this behavior?
I just came across a similar issue trying to replace _id
with id
. Doing this worked for me:
Schema.methods.toJSON = function(options) {
var document = this.toObject(options);
document.id = document._id.toHexString();
delete(document._id);
return document;
};
Maybe it will start working if you replace delete ui["_id"]
with delete ui._id
or use toObject
instead of _.clone
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With