Nonviolent Pigeon Manifestation

    mongoose-common-plugin

    2.0.3 • Public • Published

    mongoose-common-plugin

    build status code coverage code style styled with prettier made with lass license

    Common plugin for Mongoose with standard schema fields and localization support

    Table of Contents

    Install

    npm:

    npm install mongoose-common-plugin

    yarn:

    yarn add mongoose-common-plugin

    Usage

    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:

    {
      // *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,
    
      // 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`
      // <https://github.com/niftylettuce/mongoose-validation-error-transform>
      validationErrorTransform: {},
    
      // options to pass to `mongoose-hidden`
      // <https://github.com/mblarsen/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:

    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):

    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 http://niftylettuce.com/

    License

    MIT © Nick Baugh

    Install

    npm i mongoose-common-plugin

    DownloadsWeekly Downloads

    73

    Version

    2.0.3

    License

    MIT

    Unpacked Size

    18.7 kB

    Total Files

    12

    Last publish

    Collaborators

    • niftylettuce
    • titanism