code: function validate (errObj, request, schema, location, allowUnknown, context) {
    if (!request || !schema) return;
  
    var joiOptions = {
      context: context || request,
      allowUnknown: allowUnknown,
      abortEarly: false
    };
  
    Joi.validate(request, schema, joiOptions, function (errors, value) {
      if (!errors || errors.details.length === 0) {
        assignIn(request, value); // joi responses are parsed into JSON
        return;
      }
      errors.details.forEach(function (error) {
        var errorExists = find(errObj, function (item) {
          if (item && item.field === error.path && item.location === location) {
            item.messages.push(error.message);
            item.types.push(error.type);
            return item;
          }
          return;
        });
  
        if (!errorExists) {
          errObj.push({
            field: error.path,
            location: location,
            messages: [error.message],
            types: [error.type]
          });
        }
  
      });
    });
  }
docs: validate checks the current `Request` for validations
  NOTE: mutates `request` in case the object is valid.