Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ladjs/mongoose-common-plugin
Common plugin for Mongoose with standard schema fields and localization support
https://github.com/ladjs/mongoose-common-plugin
common created helper i10n i18n id locale locales localization localized locals mongoose plugin plugins security timestamp updated virtual virtuals
Last synced: 6 days ago
JSON representation
Common plugin for Mongoose with standard schema fields and localization support
- Host: GitHub
- URL: https://github.com/ladjs/mongoose-common-plugin
- Owner: ladjs
- License: mit
- Created: 2017-09-18T03:03:50.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2022-11-28T07:29:57.000Z (almost 2 years ago)
- Last Synced: 2024-10-07T05:42:46.568Z (about 1 month ago)
- Topics: common, created, helper, i10n, i18n, id, locale, locales, localization, localized, locals, mongoose, plugin, plugins, security, timestamp, updated, virtual, virtuals
- Language: JavaScript
- Homepage: https://lad.js.org
- Size: 497 KB
- Stars: 8
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# mongoose-common-plugin
[![build status](https://github.com/ladjs/mongoose-common-plugin/actions/workflows/ci.yml/badge.svg)](https://github.com/ladjs/mongoose-common-plugin/actions/workflows/ci.yml)
[![code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/sindresorhus/xo)
[![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
[![made with lass](https://img.shields.io/badge/made_with-lass-95CC28.svg)](https://lass.js.org)
[![license](https://img.shields.io/github/license/ladjs/mongoose-common-plugin.svg)]()> Common plugin for Mongoose with standard schema fields and localization support
## Table of Contents
* [Install](#install)
* [Usage](#usage)
* [Options](#options)
* [Localized Error Messages](#localized-error-messages)
* [Contributors](#contributors)
* [License](#license)## Install
[npm][]:
```sh
npm install mongoose-common-plugin
```## Usage
```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);
```## Options
> Default options shown below:
```js
{
// *REQUIRED*
// this should be the name of the model lower-cased (e.g. User)
// inspired by Stripe's API design (e.g. `"object": "charge"`)
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-hidden`
// and are extra fields you'd like to ignore from toJSON calls
// (e.g. `omitExtraFields: [ 'some_field_to_ignore' ]`)
// 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: {}
}
```## Localized Error Messages
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]):
```js
try {
user.locale = ctx.request.locale;
await user.validate();
} catch (err) {
// will throw localized validation error message for `user.email`
return ctx.throw(Boom.badRequest(err));
}
```## Contributors
| Name | Website |
| -------------- | -------------------------- |
| **Nick Baugh** | |## License
[MIT](LICENSE) © [Nick Baugh](http://niftylettuce.com/)
##
[npm]: https://www.npmjs.com/
[i18n]: https://github.com/mashpie/i18n-node
[ladjs-i18n]: https://github.com/ladjs/i18n