mongoose-serialization-proxy-plugin
Hide secret properties of mongo model when serialize the model with JSON.stringify
.
Motivation
- TODO
Features
- Support
Schema#toJSON
- Support assignment value using Proxy
- Support dry-run mode
- Support logging
Install
Install with npm:
npm install mongoose-serialization-proxy-plugin
Usage
;{ const UserSchema = name: String email: String password: type: String access: "private" secretSettings: type: SchemaTypesMixed access: "private" secretObject: child: type: SchemaTypesMixed access: "private" ; // Register plugin UserSchema; // Create Model const User = ; const userJoe = name: "Joe" email: "joe@example.com" password: "secret" secretSettings: age: 12 ; await userJoe; const user = await User; if !user throw "Not found findUserJoe"; // property reference is ok assert; assert; // serialization should be filtered // password and secretSettings should be omit assert; assert; // Assignment value should be filtered // secretSettings should be omit const secretSettings = usersecretSettings; assert;};
Example: Only Logging
Pass through toJSON, but call toJSONCallback
function.
;{ const UserSchema = name: String email: String password: type: String secretSettings: type: SchemaTypesMixed secretObject: child: type: SchemaTypesMixed ; // Register plugin UserSchema; // Create Model const User = ; const userJoe = name: "Joe" email: "joe@example.com" password: "secret" secretSettings: age: 12 ; await userJoe; const user = await User; if !user throw "Not found findUserJoe"; // it will call `toJSONCallback` callback JSON;};
Changelog
See Releases page.
Running tests
Install devDependencies and Run npm test
:
make up
npm test
Contributing
Pull requests and stars are always welcome.
For bugs and feature requests, please create an issue.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
Author
License
MIT © azu