javascript - 从服务器发送 2 组不同的错误消息

标签 javascript node.js reactjs

我有一个来自用户提交注册表单时发生的某些验证的错误数组。但与表单验证分开的是检查电子邮件地址是否存在。 (使用快速验证器)

这是如何映射错误消息并将其发送回客户端的:

 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/

相关文章:

javascript - 如何为字符串中所有相同的 URL 定义相同的数字?

JavaScript forEach() 方法混淆

reactjs - React-Router 4 捕获所有路由

javascript - 换行符后 getBoundingClientRect 的定位不正确

javascript - 使用 Javascript 检查是否仍连接到主机

javascript - 当将 "tr"位置设置为固定时,称为 "td"宽度的子元素发生变化

javascript - AutomationAnywhere + Javascript 正则表达式

javascript - Promise join 向链中添加新的函数调用

javascript - Node : node module for encryption/decryption?

javascript - ReactJS - FCM 在 safari 浏览器中不工作