UNPKG

yinxing

Version:
325 lines (286 loc) 7.66 kB
const joi=Joi=require("@hapi/joi") test=()=>{ s='ccc' s1="ddd" d1=5 d2="5" d3="c".repeat(12) reg1=/^5$/ reg2=/.{12}/ Joi.compile(reg1).validate(d1) Joi.compile(reg1).validate(d2) Joi.compile(reg2).validate(d3) r=Joi.valid(s).validate(s1) r=Joi.date().validate(s) messages = { zh: { root: 'xxx字段', 'number.min': '{#label}太小了...' }, latin: { root: 'valorem', 'number.min': Joi.x('{@label} angustus', { prefix: { local: '@' } }) } }; schema=Joi.number().min(10).message(messages) r=schema.validate(1, { errors: { language: 'zh' } }) r=schema.validate(1, { errors: { language: 'latin' } }) z=Joi.string() r=z.valid(s1).validate(s) r=z.required().validate(s) r=z.alphanum().validate(s) r=z.base().validate(s) r=z.base64().validate(s) r=z.creditCard().validate(s) r=z.dataUri().validate(s) r=z.domain().validate(s) r=z.email().validate(s) r=z.empty().validate(s) r=z.guid().validate(s) r=z.hex().validate(s) r=z.hexAlign().validate(s) r=z.hostname().validate(s) r=z.ip().validate(s) r=z.ipVersion().validate(s) r=z.isoDate().validate(s) r=z.isoDuration().validate(s) r=z.length().validate(s) r=z.lowercase().validate(s) r=z.max(1).validate(s) r=z.min(1).validate(s) r=z.normalize().validate(s) r=z.token().validate(s) r=z.pattern.base().validate(s) r=z.pattern.name().validate(s) r=z.pattern.invert.base().validate(s) r=z.pattern.invert.name().validate(s) r=z.trim().validate(s) r=z.uri().validate(s) r=z.uriCustomScheme().validate(s) r=z.uriRelativeOnly().validate(s) r=z.uppercase().validate(s) n=Joi.number() s=12 s1=10 r=n.integer().validate(s) r=n.greater(s1).validate(s) r=n.less(s1).validate(s) r=n.max(s1).validate(s) r=n.min(s1).validate(s) r=n.multiple().validate(s) r=n.negative().validate(s) r=n.port().validate(s) r=n.positive().validate(s) r=n.precision().validate(s) r=n.sign().validate(s) r=n.unsafe().validate(s) s='2020-01-01' s1="2021-01-01" d=Joi.date() r=d.validate(s) d.base().validate(s) d.format('unix').validate(s) d.format('iso').validate(s) d.format('javascript').validate(s) d.format.iso().validate(s) d.format.javascript().validate(s) d.format.unix().validate(s) d.greater(s1).validate(s) d.less(s1).validate(s) d.max(s1).validate(s) d.min(s1).validate(s) user={ name: Joi.string().required(), age: Joi.number().min(10), x:Joi.number(), x1: Joi.number().required(), x2: Joi.string().required(), x3: Joi.boolean().required(), x4: Joi.array().items( Joi.array().items({ x: Joi.number() }) ), x5: Joi.array().items( Joi.array().items( Joi.object({ x: Joi.string() } ).forbidden() ) ), detail:Joi.object({ favorite: Joi.array().items({ rank: Joi.number(), name: Joi.string().required(), }), }), follow:Joi.alternatives(Joi.number(), Joi.string()), ccc:Joi.object({ x: Joi.object({ y: Joi.object({ z: Joi.valid('z'), a: Joi.array().items(Joi.string()) }) }) }), ddd:Joi.object({ a: Joi.string().valid('a', 'b', 'c', 'd'), y: Joi.object({ u: Joi.string().valid('e', 'f', 'g', 'h').required(), b: Joi.string().valid('i', 'j').allow(false), d: Joi.object({ x: Joi.string().valid('k', 'l').required(), c: Joi.number() }) }) }), eee:Joi.array().items(Joi.valid(1, 2)), //[1,2] fff:Joi.array().items(Joi.number().min(4).max(20)), //[4..20] g:Joi.array().items(Joi.number()), h:Joi.array().items(Joi.number().min(4).max(28)), i:[ Joi.string(), Joi.number(), Joi.date() ], j:Joi.object({ x: Joi.object({ y: Joi.object({ z: Joi.number() }) }) }), date:Joi.object({ y: Joi.date().allow(null), z: Joi.date().allow(null), u: Joi.date().allow(null), g: Joi.date().allow(null), h: Joi.date().allow(null), i: Joi.date().allow(null), k: Joi.date().allow(null), p: Joi.date().allow(null), f: Joi.date().allow(null) }), response:Joi.object({ modify: Joi.boolean(), options: Joi.object() }), s:Joi.object({ type: 'ccc' }).unknown(), } u={ name:"ccc", age:12, x:123, x1:"10", x2:"ss", x3:"true", x4: [ [{ x: 1 }], [{ x: 1 }, { x: '10' }] ], x5:[ [{ x: 1 }], [{ x: 1 }, { x: 10 }] ], detail:{ favorite: [ {name:"dd", rank: 1 }, {name:"ccc", rank: '10' } ], }, // follow:[ [1,"ccc"], ], ccc:{x:{y:{ z:"z", a:["d","dd"] }}}, ddd:{ a: 'c', y: { u:"e", b: false ,// ["i", "j" ,false] d:{ x:"k", c:10, } } }, eee:[1,2], fff:[4,19,20], g:[1,"1"], h:[], i:"2020-01-01", j:{x:{y:{z:10}}}, date:{ // y: NaN, // z: Infinity, // u: -Infinity, // g: Symbol('foo'), // h: -Infinity, // i: Infinity, // k: (a) => a, // p: Symbol('bar'), // f: (x)=>[{y:2}] }, response: { modify: true, options: { stripUnknown: true } }, s:{}, } r=Joi.object(user).validate(u) u1=r.value console.log(u) console.log(u1) } //https://github.com/hapijs/joi/blob/master/test/errors.js /* Joi.ValidationError() Joi._types() Joi.allow() Joi.alt() Joi.alternatives() Joi.any() Joi.array() Joi.assert() Joi.attempt() Joi.binary() Joi.bool() Joi.boolean() Joi.build() Joi.cache() Joi.checkPreferences() Joi.compile() Joi.custom() Joi.date() Joi.defaults() Joi.disallow() Joi.equal() Joi.exist() Joi.expression() Joi.extend() Joi.forbidden() Joi.func() Joi.function() Joi.in() Joi.invalid() Joi.isExpression() Joi.isRef() Joi.isSchema() Joi.link() Joi.not() Joi.number() Joi.object() Joi.only() Joi.optional() Joi.options() Joi.override() Joi.preferences() Joi.prefs() Joi.ref() Joi.required() Joi.string() Joi.strip() Joi.symbol() Joi.trace() Joi.types() Joi.untrace() Joi.valid() Joi.version() Joi.when() Joi.x() */