[node] joi数据校验模块

前言

    在用nodejs时,需要对用户输入的数据进行验证。在前端做验证时,我们常用的做法是使用正则,正则表达式也许可以一步到位,但是他只会给你true or false,如果想要知道数据不符合哪些条件时,那么你要进一步判断,下面和大家分享一种可读性和易用性更好的实现方法。

Joi简介

    Joi是hapijs提供的数据检验插件,与 hapi一样出自沃尔玛实验室团队。Joi 的 API 因其丰富的功能,使得验证数据结构与数值的合规,变得格外容易。

1.安装
npm i joi
2.使用
const Joi = require('joi');

const schema = Joi.object().keys({
    username: Joi.string().alphanum().min(3).max(30).required(),
    password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/),
    access_token: [Joi.string(), Joi.number()],
    birthyear: Joi.number().integer().min(1900).max(2013),
    email: Joi.string().email({ minDomainAtoms: 2 })
}).with('username', 'birthyear').without('password', 'access_token');

// Return result.
const result = Joi.validate({ username: 'abc', birthyear: 1994 }, schema);
//result:{ error: null,
//  value: { username: 'abc', birthyear: 1994 },
//  then: [Function: then],
//  catch: [Function: catch] 
//}

除了对象Object以外,还有一些js的基本数据类型也支持。

const Joi = require('joi');
//number类型
const schema = Joi.number();

let result = Joi.validate('213aa',schema);
//或者 
//let result = schema.validate('213aa');
console.log(result);
//不符合类型,error有值
//result:{ error:
//   { ValidationError: "value" must be a number at Object.exports.process 
//   .....
//  value: NaN,
//  then: [Function: then],
//  catch: [Function: catch] 
//  }

更多的数据类型、方法看官方文档:https://github.com/hapijs/joi/blob/v13.6.0/API.md

3.浏览器

Joi并不直接支持浏览器,但可以将joi-browser用于在浏览器中运行的Joi的ES5版本。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzcwds

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值