/** * Request Validators */ constructor() { super(); this.deleteUser = new JoiValidate({ 'params': { 'schema': Joi.object().keys({ id: Joi.number().integer().min(1).required(), }).unknown(), }, }); }
joi.object().keys({ client: joi.object().keys({ give: joi.func().arity(2).required(), take: joi.func().arity(2).required(), reset: joi.func().arity(2).required() }).unknown().required(), ext: joi.string().valid(['onPreAuth', 'onPostAuth', 'onPreHandler']).default('onPreHandler'), allRoutes: joi.boolean().default(false), bucket: joi.string().alphanum(), countSuccess: joi.boolean().default(true), addHeaders: joi.boolean().default(true), headerLimit: joi.string().default('X-RateLimit-Limit'), headerRemaining: joi.string().default('X-RateLimit-Remaining'), headerReset: joi.string().default('X-RateLimit-Reset'), message: joi.string().default('you have exceeded your request limit'), onError: joi.func().arity(3), getKey: joi.func().arity(1).default(getRequestIP), ttlTransform: joi.func().arity(1).default(ttl => ttl), errorSize: joi.number().integer().min(0).default(1), errorDelay: joi.number().integer().min(1).default(60) }).required()
/** * GET /search * Search for a term in the library * Query Params - * term: string under 60 characters * offset: positive integer */ router.get('/search', validate({ query: { term: joi.string().max(60).required(), offset: joi.number().integer().min(0).default(0) } }), async (ctx, next) => { const {term, offset} = ctx.request.query aaa = await search.queryTerm(term, offset) ctx.body = aaa } );
buildFieldSchema(fieldConfig) { switch (fieldConfig.type) { case 'integer': { let schema = Joi.number().integer(); if (fieldConfig.min) { schema = schema.min(fieldConfig.min); } if (fieldConfig.max) { schema = schema.max(fieldConfig.max); } if (fieldConfig.required) { schema = schema.required(); } return schema; } case 'select': { return Joi.any().valid(fieldConfig.options); } } }
app.post('/', (req, res) => { console.log(req.body); const schema = Joi.object().keys({ fname: Joi.string().min(2).max(20).required(), lname: Joi.string().min(2).max(20).required(), age: Joi.number().min(18).max(100).required(), email: Joi.string().trim().email().required(), password: Joi.string().min(5).max(20).required(), }); Joi.validate(req.body, schema, (err, result) => { if (err) { console.log(err); res.send('An Error Has been Occured!'); } console.log(result); res.send('Successfully Posted The data.'); }); });
}, params: { id: joi.number().integer().min(1).max(100)
joi.object().keys({ client: joi.object().keys({ give: joi.func().arity(2).required(), take: joi.func().arity(2).required(), reset: joi.func().arity(2).required() }).unknown().required(), ext: joi.string().valid(['onPreAuth', 'onPostAuth', 'onPreHandler']).default('onPreHandler'), allRoutes: joi.boolean().default(false), bucket: joi.string().alphanum(), countSuccess: joi.boolean().default(true), addHeaders: joi.boolean().default(true), headerLimit: joi.string().default('X-RateLimit-Limit'), headerRemaining: joi.string().default('X-RateLimit-Remaining'), headerReset: joi.string().default('X-RateLimit-Reset'), message: joi.string().default('you have exceeded your request limit'), onError: joi.func().arity(3), getKey: joi.func().arity(1).default(getRequestIP), ttlTransform: joi.func().arity(1).default(ttl => ttl), errorSize: joi.number().integer().min(0).default(1), errorDelay: joi.number().integer().min(1).default(60) }).required()