首页 > 解决方案 > React 组件只显示状态码错误消息而不是自定义的

问题描述

在 POST 注册新用户期间,我检查该用户是否已存在于 mongoDB 数据库中,如果是,则将其显示在注册表附近的反应中。我正在使用 express.js 创建我的 API 和 axios 以从客户端发送请求。这就是我检查用户是否注册的方式。

const user = await Model.User.findOne({email: req.body.email});
if(user) return res.status(400).send('User already registered');

这是在注册按钮单击时调用的函数:

handleSubmit= async (userData) =>{
    await apis.registerNewUser(userData)
    .then(res => console.log(res.body))
    .catch(err => {
        console.log(err);
        this.setState({errorMessage: err.message});
    })   
}

问题是我无法显示发送响应时添加的自定义错误消息。我没有得到“用户已经注册”,而是在我的注册表单附近显示“400 Bad request”。当我通过邮递员发帖时没有问题,响应文本窗口中显示“用户已注册”响应,但是在反应端收到错误时该部分不存在。我无法向用户发送一个错误,告诉他无法注册的原因。如何在反应中获得“用户已注册”?

标签: reactjsmongodbexpresspromiseaxios

解决方案


我找到了解决方案。为了在捕获错误时读取放入 send() 的自定义文本的属性,我需要从 err.response.data 读取 - 这是读取“用户已注册”的正确属性。我希望有一天它对某人有所帮助。


推荐阅读