【发布时间】:2019-09-12 18:44:45
【问题描述】:
我正在尝试验证一个登录请求,它接受一个可以是电子邮件或用户名的用户名和一个密码。如何使用 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...
});
使用验证器,我还想检查它是否是
- 用户名或电子邮件
- 如果是电子邮件,请使用 isEmail() 验证器确保它是真实的电子邮件
- 如果是用户名,请确保它超过三个字符并且有一个实际的用户名。
尝试
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() });
}
});
似乎验证器不起作用。
【问题讨论】:
-
我在这里解决了这个问题:stackoverflow.com/a/60216241/2262856
标签: node.js express express-validator