koa-better-validation
v1.3.4
Published
Koa Better Validation is a more up-to-date 'fork' of koa-validation. You can validate request params, querystring values, bodies, and even files.
Downloads
16
Readme
Koa Better Validation
Koa Better Validation is a more up-to-date "fork" of koa-validation. You can validate request params, querystring values, bodies, and even files.
You can also extend this module to add custom validations, filters, and rules.
Install
npm install koa-better-validation
Field Validations
const app = require('koa')();
const router = require('koa-router')();
const koaBody = require('koa-better-body');
require('koa-qs')(app, 'extended');
const validate = require('koa-better-validation');
app.use(koaBody({
'multipart': true
}));
app.use(validate());
router.post('/', function *(){
yield this.validateBody({
name : 'required|minLength:4',
girlfiend: 'requiredIf:age,25',
wife : 'requiredNotIf:age,22',
foo : 'requiredWith:bar,baz',
foobar : 'requiredWithAll:barbaz,bazbaz',
gandalf : 'requiredWithout:Saruman',
tyrion : 'requiredWithoutAll:tywin,cercei',
age : 'numeric',
teenage : 'digitsBetween:13,19',
date : 'dateFormat:MMDDYYYY',
birthdate: 'date',
past : 'before:2015-10-06',
future : 'after:2015-10-07',
gender : 'in:male, female',
genres : 'notIn:Pop,Metal',
grade : 'accepted',
nickname : 'alpha',
nospaces : 'alphaDash',
email : 'email',
alphanum : 'alphaNumeric',
password : 'between:6,15'
}, {
'name.required': 'The name field is a required one'
}, {
before: {
name : 'lowercase',
nickname: 'uppercase',
snum : 'integer',
sword : 'trim',
lword : 'ltrim',
rword : 'rtrim',
dnum : 'float',
bword : 'boolean',
},
after: {
obj : 'json',
eword : 'escape',
reword : 'replace:come,came',
shaword: 'sha1',
mdword : 'md5',
hexword: 'hex:sha256'
}
});
if (this.validationErrors) {
this.status = 422;
this.body = this.validationErrors;
return;
}
this.body = { success: true };
});
File Validations
const app = require('koa')();
const router = require('koa-router')();
const koaBody = require('koa-better-body');
require('koa-qs')(app, 'extended');
const validate = require('koa-better-validation');
app.use(koaBody({
'multipart': true
}));
app.use(validate());
router.post('/files', function* () {
yield this.validateFiles({
'jsFile' :'required|size:min,10kb,max,20kb',
'imgFile' : 'required|image',
'imgFile1': 'mime:jpg',
'imgFile2': 'extension:jpg',
'pkgFile' : 'name:package'
}, true, {}, {
jsFile: {
action: 'move',
args: `${__dirname}/../files/tmp/rules.js`,
callback: function* (validator, file, destination) {
validator.addError(file, 'action', 'move', 'Just checking if the callback action works!!')
}
},
imgFile: [
{
action: 'copy',
args: __dirname + '/../files/tmp/panda.jpg'
},
{
action: 'delete'
}
]
});
if (this.validationErrors) {
this.status = 422;
this.body = this.validationErrors;
return;
}
this.body = { success: true };
});
app.use(router.routes()).use(router.allowedMethods());
Currently it works like the original package koa-validation
. Until we get our
own in-depth documentation, you can
check out the original documentation.