Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从服务器发送两组不同的错误消息_Javascript_Node.js_Reactjs - Fatal编程技术网

Javascript 从服务器发送两组不同的错误消息

Javascript 从服务器发送两组不同的错误消息,javascript,node.js,reactjs,Javascript,Node.js,Reactjs,我有一个错误数组,来自用户提交注册表时发生的一些验证。但与表单验证不同的是检查电子邮件地址是否存在。(使用快速验证器) 这是映射错误消息并发送回客户端的方式: const errorMsg = errors.array().map(err => err.msg); return res.status(422).send(errorMsg); 那么我有什么反应 try { const response = await register(user); co

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

这是映射错误消息并发送回客户端的方式:

 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>
  )}

我认为我的问题是,其他错误在一个数组中,而唯一的电子邮件错误不在数组中。

如果是电子邮件值,则需要返回包含
错误的响应对象,其值为字符串数组/s。e、 g

const emailExists = await User.findOne({ email: req.body.email });
if (emailExists) return res.status(400).send({ errors: ["Email already exists"] });

您何时执行
emailExists
检查?在您尝试调用
寄存器的同时
?您使用什么形式的db来确定电子邮件是否已注册?正确,我会在提交注册表的同时进行检查。我正在使用MongoClose。似乎必须是:
if(emailExists)return res.status(400)。send([“email exists”])
const emailExists = await User.findOne({ email: req.body.email });
if (emailExists) return res.status(400).send({ errors: ["Email already exists"] });