Normalize Mongoose JSON output
This plugin removes the following fields _id, __v, and published virtuals id when the document is converted to JSON. Also it allows you to hide private fields like password.
$ npm install normalize-mongoose
Using Github NPM Registry
$ npm install abranhe@normalize-mongoose
import mongoose from 'mongoose';
import normalize from 'normalize-mongoose';
const personSchema = mongoose.Schema({
    name: String,
    age: Number,
});
personSchema.plugin(normalize);See how normalize-mongoose will clean the the JSON output:
{
  "_id": "5dff03d3218b91425b9d6fab",
  "name": "Abraham",
  "__v": 0
}{
  "id": "5dff03d3218b91425b9d6fab",
  "name": "Abraham"
}normalize-mongoose comes really handy on real word applications, allowing you to hide from the output any private field previously defined.
import mongoose from 'mongoose';
import normalize from 'normalize-mongoose';
const personSchema = mongoose.Schema({
    name: String,
    age: Number,
    email: String,
    password: { type: String, private: true },
});
personSchema.plugin(normalize);
const Person = mongoose.model('Person', personSchema);
const someone = new Person( {
  name: 'Abraham',
  age: 33,
  email: '[email protected]',
  password: 'my_awesome_password',
});The above code will output:
{
  "id": "5dff03d3218b91425b9d6fab",
  "name": "Abraham",
  "age": 33,
  "email": "[email protected]"
}MIT © Abraham Hernandez