0.2.9 • Published 8 years ago

mserv-validate v0.2.9

Weekly downloads
1
License
MIT
Repository
github
Last release
8 years ago

Introduction

mserv-validate is mserv middleware to provide input validation and cleansing services to the message pipeline. It uses Joi to perform the actual validation.

Installation

$ npm i --save mserv-validate

Usage

var validate = require('mserv-validate'),
	service  = require('mserv')(),

service.use('validate', validate)

service.action({
	name: 'login',
	validate:  {
		request: {
			email: Joi.string().email().trim().required(),
			password: Joi.string().required()
		}
	},
	handler: function*() {
		// Here we are know that email and password are valid.
	}
})

Validation

Actions should specify a validate key whose value is a Joi model or a plain object whose keys are Joi models. The latter will be converted to a using:

Joi.object().keys( actionKeys ).options({stripUnknown:true}).

This has the effect of removing unknown keys and casting them to the expected type. The context request is set to output of the Joi.validate function.

this.req = Joi.validate(...).value.

By default, global options set the following Joi options:

  • abortEarly:false
  • convert:true

Custom Error Handling

The default error handler converts Joi errors into a {status, errors:{key,value,error}}. If another response format is preferable then simply provide an error handler.

service.use('validate',validate,{
	handler: function*(error) {
		this.res = 'BOOM!'
	}
})

Action Level Error Handling

Actions can also define an error handler, which would get executed before the global handler.

service.action({
	name: 'login',
	validate:  {
		request: {
			email: Joi.string().email().trim().required(),
			password: Joi.string().required()
		},
		handler: function*(err){
			console.log(err)
		}
	},
	handler: function*() {
		// Here we are know that email and password are valid.
	}
})
0.2.9

8 years ago

0.2.8

8 years ago

0.2.7

9 years ago

0.2.6

9 years ago

0.2.5

9 years ago

0.2.4

9 years ago

0.2.3

9 years ago

0.2.2

9 years ago

0.2.1

9 years ago

0.2.0

9 years ago