node.js - joi模块

官网文档https://github.com/sideway/joi/blob/v13.6.0/API.md

注意:该文章只适用于 13.6.0 版本,最新版本语法已经变了,所以安装时需要指定版本


作用:

  • 它是一个验证器,可以验证传入的值是否合法,验证格式可以自定义,它提供了很多方法,可以直接调用方法来验证。

0x01 使用:

1、下载 Joi 模块

npm install joi@13.6.0

2、引入 Joi 模块

const Joi = require("joi");

3、定义验证规则:

  • 声明一个变量 (schema),这个变量的值是一个对象,在对象内部定义的就是验证规则。

    • 属性:表单传过来的 name 名称

    • 值:验证内容,例如 最小长度,最大长度…

  • 如果被验证的对象中出现规则以外的内容,验证就会失败。

const schema = {
    username: Joi.string().min(2).max(20).required().error(new Error("传入的数据不合法!")),
    //...
}

注意:必须将类型写在最前面,不同类型有不同的验证规则。


使用规则验证表单传过来的数据:

  • 使用 Joi.validate( 被验证的对象, 验证规则) 方法来验证。
Joi.validate(req.body, schema);

它返回一个 Promise 对象。

  • 如果验证通过:

    • 返回被验证的表单数据对象(req.body这个对象)。
  • 如果验证失败:

    • 抛出一个异常。
async function run(){
    try{
        const t = await Joi.validate(req.body, schema);
        console.log(t);
    }catch(e){
        console.log(e.message)
    }
}

run();

0x02 方法:

string():字符串类型。

  • alphanum():只能包含az、A-Z、0-9,不能包含其他特殊字符。

  • regex():这个方法接收一个正则表达式,用这个参数来验证这个字段。

  • min():字符串的小长度。

  • max():字符串的最大长度。

  • required():这个属性是必填属性。

  • [ Joi.string(), Joi.number() ]:这两种类型都可以,如果不是这两种,则不通过。

  • email():必须符合邮箱格式。

  • error(new Error("错误信息")):如果不符合验证规则,则会抛出这个错误。

  • valid( 'a', 'b' ):只能是这个参数内中的值,不能是其他的。


number():数值类型。

  • integer():必须是整数。

  • min():数值最小数 (注意:不是长度)

  • max():数字最大数 (注意:不是长度)


发表评论 / Comment

用心评论~