数据校验是为了对请求的数据进行数据类型限制,以保证程序能正常运行。原因是如果请求的数据类型不限制,例如,js 中对非数字类型的字段进行数值运算,就会得到 NaN
。
Node.js 数据校验有很多,这里我们使用joi
joi
校验规则
我们把所有校验规则按路由源码对应的路径分文件,每个路由文件一个校验文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| const Joi = require("joi");
const login = Joi.object({ email: Joi.string() .email({ tlds: { allow: ["com", "net"] } }).required(), password: Joi.string() .length(16).alphanum().required() });
module.exports = { login };
|
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| const express = require("express"); const router = express.Router();
const { login } = require("../../joi/v1/auth.joi");
const { MyError } = require("../../../utils/index");
router.post("", async function(req, res, next) { try { await login.validateAsync(req.body).catch(err => { throw new MyError(40001, err); }); } catch (error) { next(error); } });
module.exports = router;
|