var joi = require('joi'); var _ = require('lodash'); module.exports = { joi: function(data, schema, callback) { opts = { abortEarly: false, convert: true, allowUnknown: false, stripUnknown: false } joi.validate(data, schema, opts, function(err, obj){ if(err) { var errs = _.map(err.details, function(e) { var key = e.path; var x = e.type; var _postfix = undefined; switch(_.last(x.split('.'))) { case 'required': _postfix = 'required'; break; case 'allowUnknown': _postfix = 'not allowed'; break; default: _postfix = 'invalid format' break; } return `${key} is ${_postfix}`; }); callback(errs, null); } else { callback(null, obj); } }) } };