我用node.js编写了这段代码,以验证来自一个json用户的用户名和密码。问题是它一直循环遍历所有用户,尽管已经找到了一个有效的用户。如何在找到有效用户时中断循环?
users.forEach(function (user) {
if(req.body.username==user.username){
if(req.body.password==user.password){
console.log('validate success');
res.status(200).send({message:'user validation successful'});
}
}
else{
console.log('validate failed');
res.status(404).send({message:'user validation failed'});
}
});
发布于 2018-05-23 21:00:07
您想要的是对与用户名匹配的用户执行find操作,如果找到了,请检查密码。这样,您还可以提供正确的错误消息来告诉用户错误所在(用户名或密码)
const user = users.find(function (user) {
return user.username === req.body.username
})
if (!user) {
return res.status(404).send({ message: 'User not found' })
}
if (user.password !== req.body.password) {
return res.status(404).send({ message: 'Wrong pasword' })
}
// everything is alright
return res.status(200).send({message:'user validation successful'})
您可以使用arrow function来缩短查找时间
const user = users.find(u => (u.username === req.body.username))
https://stackoverflow.com/questions/50488993
复制相似问题