我正在尝试验证一个登录请求,它接受一个可以是电子邮件或用户名的用户名和一个密码。如何使用 Express-Validator 执行此操作?
我正在阅读文档,验证器的工作方式是您必须将数据作为第二个参数传递。我不确定如何通过检查它是否也是用户名或密码来完成。
router.post("/", (req, res) => {
const { nickname, password } = req.body;
// Create a new object based on email or username
const login = {};
if (nickname.indexOf('@') === -1) {
login.nickname = nickname;
} else {
login.email = nickname;
}
login.password = password;
// JWT Sign...
});
使用验证器,我还想检查它是否
试图
router.post("/", (req, res) => {
const { nickname, password } = req.body;
// Create a new object based on email or username
const login = {};
if (nickname.indexOf('@') === -1) {
check('nickname').isLength({ 'min': 3 });
login.nickname = nickname;
} else {
check('nickname').isEmail();
login.email = nickname;
}
login.password = password;
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.array() });
}
});
似乎验证器不起作用。
试试这个,
npm install validator
和
npm install express-validator
然后
const {check, oneOf } = require('express-validator')
const validator = require('validator')
在您的验证功能中试试这个,
oneOf([
check('nickname').isEmail(),
check('nickname').not().isEmpty().isString().custom((value, {req})=>{
if(!validator.isEmail(value)){
req.body.flag = true
// you can handler your req.body here ....
}
return true
})
]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句