import Koa from 'koa';
import Joi from 'joi';
import Router from '@koa/router';
import validateSchemaJoi from './middlewares/schema.js';
const app = new Koa();
const router = new Router();
const loginSchema = Joi.object({
a: Joi.string()
.min(3)
.max(30)
});
router.get('/test', validateSchemaJoi('get', loginSchema), async (req, next) => {
req.body = 'haha'
});
app
.use(router.routes())
.use(router.allowedMethods());
app.listen(3000);
function validateSchemaJoi(method, schema) {
async function validateSchema (ctx, next) {
let data = undefined;
if (method === 'get') {
data = ctx.request.query;
} else {
data = ctx.request.body;
}
const { value, error } = schema.validate(data);
if (error) {
ctx.body = error;
} else {
next();
}
}
return validateSchema;
}
export default validateSchemaJoi;