eggJS egg-joi优雅的参数校验

5 篇文章 0 订阅
5 篇文章 0 订阅

刚刚接触egg没多久,一直使用egg自带的validate做校验,emmm~用过的都知道,之前用hapi的时候感觉joi用着很舒服,然后在网上找了一个插件egg-joi。
 

我的项目结构

 

安装依赖

npm i egg-joi --save

引入插件 app/config/plugin.js

exports.joi = {
  enable: true,
  package: 'egg-joi',
};

配置插件 app/config/config.default.js

exports.joi = {
    options: {},
    locale: {
        'zh-cn': {}
    },
    throw: true, # 校验出错是是否自动抛出错误
    throwHandle: (error) => { return error; }, # throw 为 true 时对抛出的错误做格式化处理
    errorHandle: (error) => { return error; }, # throw 为 false 时错误会作为结果返回,默认 { error, value },此函数可以对错误做格式化  
    resultHandle: (result) => { return result; } # 对返回结果做处理的函数,默认返回结果 { error, value }
};

例子 

app/validator/module

module.exports = app => {
    const Joi = app.Joi;
    return {
        getData: Joi.object().keys({
            userid: Joi.string().required(),
            id: Joi.number(),
            typeid: Joi.number(),
            name: Joi.string(),
            state: Joi.string(),
            pageSize: Joi.number(),
            pageIndex: Joi.number(),
        })
    }
};

app/controller/moduleControl

    async getData() {
	const ctx = this.ctx;
	const params = ctx.query;
	const validator = this.app.validator;
	console.log("getData-params===", params);

	try {
	    ctx.validate(validator.module.getData, params);
	    const data = await ctx.service.moduleServe.getData(params);
	    ctx.body = JSON.stringify(data);
	} catch (err) {
		ctx.body = JSON.stringify(err);
	}
    }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值