@ifit/mongoose-clean

Removes private vars, __v, and renames _id to id for mongoose documents

Stats

StarsIssuesVersionUpdatedCreatedSize
@ifit/mongoose-clean
1.1.03 years ago4 years agoMinified + gzip package size for @ifit/mongoose-clean in KB

Readme

Purpose

A plugin for Mongoose to normalize JSON output, as well as Object output. Based on mongoose-to-json

Contributing

See CONTRIBUTING.md

Usage

Setup as a global plugin for all Mongoose schema's:

const mongoose = require("mongoose");
const clean = require("@ifit/mongoose-clean");

mongoose.plugin(clean);

Or for a specific (sub) schema:

const mongoose = require("mongoose");
const clean = require("@ifit/mongoose-clean");
const { Schema } = mongoose;

const MySchema = new Schema({});
MySchema.plugin(clean);

This plugin will normalize JSON output for client side applications from:

{
  "_id": "400e8324a71d4410b9dc3980b5f8cdea",
  "__v": 2,
  "name": "Item A"
}

To a cleaner:

{
  "id": "400e8324a71d4410b9dc3980b5f8cdea",
  "name": "Item A"
}

You can also remove private paths from the JSON:

const mongoose = require("mongoose");
const toJson = require("@ifit/mongoose-clean");
const { Schema } = mongoose;

const schema = new Schema({
  email: { type: String },
  password: { type: String, private: true }
});

schema.plugin(toJson);

const User = mongoose.model("users", schema);
const user = new User({ email: "test@test.com", password: "test" });

console.log(user.toJSON());

This will output:

{
  "id": "400e8324a71d4410b9dc3980b5f8cdea",
  "email": "test@test.com"
}

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.