Common plugin for Mongoose with standard schema fields and localization support
npm install mongoose-common-plugin



![license]()
> Common plugin for Mongoose with standard schema fields and localization support
* Install
* Usage
* Options
* Localized Error Messages
* Contributors
* License
[npm][]:
``sh`
npm install mongoose-common-plugin
`js
const mongooseCommonPlugin = require('mongoose-common-plugin');
const mongoose = require('mongoose');
const User = new mongoose.Schema({});
User.plugin(mongooseCommonPlugin, { object: 'user' });
module.exports = mongoose.model('User', User);
`
> Default options shown below:
`js"object": "charge"
{
// REQUIRED
// this should be the name of the model lower-cased (e.g. User)
// inspired by Stripe's API design (e.g. )
object: '',
// whether or not your fields/database design is camelCased
camelCase: false,
// whether or not to add virtual getter/setter localization support
// (super useful for adding Mongoose validation errors that are localized)
locale: true,
// default locale used (e.g. you could use i18n.defaultLocale() if using @ladjs/i18n)
defaultLocale: 'en',
// whether or not to use mongoose-omit-common-fields
omitCommonFields: true,
// either an Array or Object
// these will get added to mongoose-hiddenomitExtraFields: [ 'some_field_to_ignore' ]
// and are extra fields you'd like to ignore from toJSON calls
// (e.g. )-
// note that we automatically add the prefix to keys for Arrays passed
omitExtraFields: [],
// options to pass to mongoose-unique-validator
uniqueValidator: {
message: require('@ladjs/mongoose-error-messages').general.unique
},
// options to pass to mongoose-validation-error-transform
//
validationErrorTransform: {},
// options to pass to mongoose-hidden`
//
mongooseHidden: {}
}
By default the options.locale value is true. Therefore you can add localized error messages using [i18n][].
> User model definition:
`js
const i18n = require('i18n');
const mongoose = require('mongoose');
const validator = require('validator');
const User = new mongoose.Schema({
email: {
type: String,
required: true,
index: true,
validate: (val, fn) => {
if (validator.isEmail(val))
return fn();
fn(false, i18n.__({
phrase: 'Invalid email address',
locale: this.locale
});
}
}
});
`
> Route middleware (assumes you're using something like [@ladjs/i18n][ladjs-i18n]):
`jsuser.email
try {
user.locale = ctx.request.locale;
await user.validate();
} catch (err) {
// will throw localized validation error message for ``
return ctx.throw(Boom.badRequest(err));
}
| Name | Website |
| -------------- | -------------------------- |
| Nick Baugh |
##
[npm]: https://www.npmjs.com/
[i18n]: https://github.com/mashpie/i18n-node
[ladjs-i18n]: https://github.com/ladjs/i18n