node.js表单验证Joi新版做法
记录一下自己在写node.js表单验证这块的做法
可以用 validator,也可以用Joi,这两个的下载量都很大, 个人是采用Joi,这里附上它的文档地址
Joi示例文档
首先创建表单的验证规则,暂时只设置了关于账号和密码的
const Joi = require("joi")
// 定义表单验证规则
const schema = Joi.object({
name: Joi.string().alphanum().min(5).max(12).required().error( new
Error("账号不规范")),
password: Joi.string().required().regex(/^[a-zA-Z0-9]{8,16}$/).error(
new Error("密码不规范")
),
});
// const info = {name: 'abc454', password:"6546"}
// schema.validateAsync(info);
module.exports= schema
可以用下方注释代码进行测试是否有效
由于我是模块化的选择,向外暴露验证规则
在表单验证主模块里进行引入
const user_schema = require("../schema/user")
这里设置表单验证的中间件,也可以不设置直接放在主验证之中也可以
exports.validation = async(req,res,next)=>{
try {
const value= await user_schema.validateAsync(req.body);
next()
}catch(err){
// console.log("这里被用到了");
return res.cc(err)
}
}
这里默认设置的是req.body里面的数据,也可以不接收验证的数据
res.cc是相当于封装的res.send,这里附上代码
app.use(function(req,res,next){
// 定义一个res.send的全局中间件,必须要在所有路由之前
// 只需要输入错误参数即可实现res.send,默认是错误的
res.cc = function(err,status=1){
res.send(
{
status,
// 这里判断err是不是错误的实例对象,是就输出,不是就输出参数
message:err instanceof Error ? err.message : err
}
)
}
next()
})
在路由中引入中间件和验证模块
const {validation , regUser, login}= require("../router_handler/user")
// 注册
// 这里可以写中间件来先判断注册的数据是否合法
router.post("/registered",validation,regUser
// 这里也要调用数据库
)
regUser就是关于数据库查询和插入这方面的代码。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfiijie
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13