Express validate 中间件

在web程序中经常要验证用户提交的数据,不但前端要验证,后台业务同样要验证,否则会出大问题的。(ps:一些懒惰的后端总是不验证提交的数据就写到数据库了,将来是要掉坑的)

github已经有不少validate的中间件了,例如:express-validator(https://github.com/ctavan/express-validator) ,但是我觉得express-validator用起来不舒服,它的写法不够优美:

app.use(expressValidator([options]));
app.post('/:urlparam', function(req, res) {
    req.checkBody('postparam', 'Invalid postparam').notEmpty().isInt();
    req.checkParams('urlparam', 'Invalid urlparam').isAlpha();
    req.checkQuery('getparam', 'Invalid getparam').isInt();
    ......
}

如果要验证十来个字段,看起来就不漂亮。而且我往往会忘掉这种语法,所以我自己写了一个简单的validate中间件,核心部分的代码如下:

var Validator = require('schema-validator');

function validateMiddleware(rules){
    return validate;

    function validate(req, res, next){
        var formData = req.getData();
        var validator = new Validator(rules);

        var result = validator.check(formData);
        if(!result._error){
            next();
        }else{
            res.send(result);
        }
    }
}

module.exports = validateMiddleware;

调用的代码就十分优美了:

router.post('/password',  
    validate({
        oldPassword: {
            required: true
        },
        newPassword: {
            required: true
        }
    }), 
    function(){
        ...
    }
);

过一段时间闲下来了再完善这个中间件,然后放到github上面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值