【发布时间】:2019-11-11 19:24:01
【问题描述】:
我有一个错误数组,来自用户提交注册表单时发生的一些验证。但与表单验证不同的是检查电子邮件地址是否存在。 (使用快速验证器)
这是映射错误消息并发送回客户端的方式:
const errorMsg = errors.array().map(err => err.msg);
return res.status(422).send(errorMsg);
然后我有反应
try {
const response = await register(user);
console.log(response);
} catch (ex) {
if (ex.response) {
const errors = ex.response.data;
console.log(errors);
this.setState({ errors });
}
}
然后,我在客户端上的数组中循环以将错误消息显示给用户。
{Array.isArray(this.state.errors) && (
<div className="alert alert-danger">
{this.state.errors.map((error, index) => (
<div key={index}>
{error}
</div>
))}
</div>
)}
如果电子邮件地址已被使用,则会显示所有错误,但电子邮件地址除外。错误消息仅显示在控制台中,而不显示在警报中。
这就是我发回错误消息的方式:
const emailExists = await User.findOne({ email: req.body.email });
if (emailExists) return res.status(400).send("Email already exists");
我认为我的问题是其他错误在数组中,而唯一的电子邮件不在。
【问题讨论】:
-
什么时候执行
emailExists检查?同时您尝试拨打register?您使用什么形式的数据库来确定电子邮件是否已经注册? -
正确,我在提交注册表的同时检查。我正在使用 Mongo
标签: javascript node.js reactjs