我有一个来自用户提交注册表单时发生的某些验证的错误数组。但与表单验证分开的是检查电子邮件地址是否存在。 (使用快速验证器)
这是如何映射错误消息并将其发送回客户端的:
const errorMsg = errors.array().map(err => err.msg);
return res.status(422).send(errorMsg);
然后我使用react
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");
我认为我的问题是其他错误位于数组中,而唯一的电子邮件错误则不在数组中。
最佳答案
如果进行电子邮件验证,您需要返回包含 errors
键的响应对象,其值为字符串数组。例如
const emailExists = await User.findOne({ email: req.body.email });
if (emailExists) return res.status(400).send({ errors: ["Email already exists"] });
关于javascript - 从服务器发送 2 组不同的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58807450/