Blame view

lib/validate.js 920 Bytes
adfda8e1   Arsisakarn Srilatanart   initial commit fr...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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);
      }

    })
  }
};