2.4.0 • Published 6 years ago

@lxxyx/mongoose-to-json v2.4.0

Weekly downloads
-
License
MIT
Repository
github
Last release
6 years ago

@meanie/mongoose-to-json

npm version node dependencies github issues codacy

A plugin for Mongoose to normalize JSON output

Meanie

Installation

You can install this package using yarn or npm.

#yarn
yarn add @meanie/mongoose-to-json

#npm
npm install @meanie/mongoose-to-json --save

Usage

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

const mongoose = require('mongoose');
const toJson = require('@meanie/mongoose-to-json');

mongoose.plugin(toJson);

Or for a specific (sub) schema:

const mongoose = require('mongoose');
const toJson = require('@meanie/mongoose-to-json');
const {Schema} = mongoose;

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

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('@meanie/mongoose-to-json');
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"
}

Issues & feature requests

Please report any bugs, issues, suggestions and feature requests in the @meanie/mongoose-to-json issue tracker.

Contributing

Pull requests are welcome! If you would like to contribute to Meanie, please check out the Meanie contributing guidelines.

Credits

License

(MIT License)

Copyright 2016-2017, Adam Reis