Neanderthals Programming Machines

npm

Share private packages across your team with npm Orgs, now with simplified billing via the aws marketplace!Learn more »

mongoose-common-plugin

0.1.1 • 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-json-select`
  // 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-json-select`
  // <https://github.com/nkzawa/mongoose-json-select>
  jsonSelect: {}
}

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

59

version

0.1.1

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability