Fluent, functional, and extendable validation for Koa 2 body, params, and query. Built on validator for base validations and filters.
This only works for Koa 2 and Node v7.6+
yarn add koa-fluent-validation
# OR
npm i koa-fluent-validation
This is built with TypeScript targeting ECMA 2017 as the output. You will get type definitions when using with TypeScript and of course you can use vanilla JavaScript.
Map files are included so you can debug if you are using VS Code or similar for TypeScript debugging.
For a more common implementation, all examples will be in JavaScript.
const Koa = require('koa');
const bodyparser = require('koa-bodyparser');
const { validator, v, f } = require('koa-fluent-validation');
const app = new Koa();
app.use(bodyparser());
app.use(validator());
app.use(async (ctx, next) => {
try {
await next();
} catch (e) {
if (e.status === 422) {
ctx.body = ctx.validationErrors;
return;
}
// ... some other handling here etc
}
});
// simple post route
app.use(async (ctx, next) => {
if (ctx.method !== 'POST') {
ctx.throw(404);
return;
}
ctx.validateBody({
firstName: v().required().string(),
lastName: v().required().string()
}, {
firstName: f().trim(),
lastName: f().trim()
});
// your code here
});
app.listen(8080);
For documentation see the wiki!