0.2.0 • Published 6 years ago

takiwa-error-management v0.2.0

Weekly downloads
2
License
ISC
Repository
gitlab
Last release
6 years ago

Error Management

Middleware (express)

path: lib/middleware

httpErrorHandler

  1. Sends error messages in JSON format from the server to a client
  2. Must be configured before use
  3. Uses custom templates with placeholders

Usage

const { httpErrorHanlder } = require('error-management');
...
app.use(httpErrorHandler({
  template: {
    error: true,
    message: '%message%'
  }  
}));

Options

OptionDescription
templateContains Single template (Object) or Multiple templates (Array of objects).

examlpe (Single template):

{
  ...
  template: {
    error: true,
    message: '%message%'
  },
  ...
}

When using Multiple templates each one should have required options:

OptionDescription
templateTemplate in the format similar to Single template
defaultDefault template flag, should be set to 'true'
conditionObject with conditions when to select exactly this template
Condition

Defines selection rules for choosing a template

OptionDescriptionExample
httpStatusCodematches against error http status code returned by library helper getHTTPStatusCodehttpStatusCode: 500

Placeholders

Placeholders are used to define the place for a value taken from the corresponding Error property. For instance, an error like this:

error = new Error('Some error');
error.name = 'ValidationError';

with the template:

{
  template: {
    error: true,
    message: '%message%',
    data: {
      name: '%name%'
    }
  }
}

results in JSON format error message sent to a client:

{
  error: true,
  message: 'Some error',
  data: {
    name: 'ValidationError'
  }
}

Currently supported placeholders:

  • %code%
  • %extra%
  • %message%
  • %name%

Configuration examples

example 1: Single template

httpErrorHandler({
  template: {
    error: true,
    message: '%message%'
  }
})

example 2: Multiple templates

httpErrorHandler({
  template: [
    {
      default: true,
      template: {
        status: 'fail',
        data: '%extra%'
      }
    },
    {
      condition: {
        httpStatusCode: 500
      },
      template: {
        status: 'error',
        message: '%message%'
      }
    }
  ]
})

mongooseErrorConverter

  1. Checks if passed a mongoose error
  2. Extracts mongoose specific data and updates error object properties with it
  3. Passes modified error to the next express middleware

Usage

const { mongooseErrorConverter } = require('./errorManagement');
...
app.use(mongooseErrorConverter());

usage with httpErrorHandler:

const { httpErrorHanlder, mongooseErrorConverter } = require('./errorManagement');
...
app.use(mongooseErrorConverter());
app.use(httpErrorHandler({
  template: {
    error: true,
    message: '%message%'
  }  
}));

Supported Mongoose Error Types

Currently supported:

  • ValidationError

Helpers

path: lib/helpers

getHTTPStatusCode

Returns http status code corresponding to the given error name.

...
const httpStatusCode = getHTTPStatusCode('ValidationError');

console.log(httpStatusCode); // -> 400

TODO

  • add parseMongoose option instead of using mongooseErrorConverter middleware