当前位置: 首页 > 面试题库 >

如何处理对象内部和外部对象的js前端中的后端错误

司空俊雅
2023-03-14
问题内容

我有用户登录,并且我有2个错误处理程序

  1. 电子邮件和密码为空

  2. 电子邮件和密码与数据库不匹配

通过邮递员寄给我

  1. 用户名和密码为空,结果为
    {
        "errors": {
            "email": "please enter valid emails",
            "password": "please enter password"
        }
    }
  1. 电子邮件和密码错误,结果是
    {
        "general": "email or password not match"
    }

我注意到第一个错误有对象错误,第二个没有

我的反应js代码是

    // i remove css and imports 

    class login extends Component {
        constructor() {
            super();
            this.state = {
                email: '',
                password: '',
                loading: false,
                errors: {}

            }
        }
        handleChnage = (event) => {
            this.setState({
                [event.target.name]: event.target.value
            })
        }
        handleSubmit = (event) => {
            // console.log('hi');
            event.preventDefault();
            this.setState({
                loading: true
            });
            const userData = {
                email: this.state.email,
                password: this.state.password
            }
            axios.post('/login', userData)
                .then((res) => {
                    //console.log(res.data)
                    this.setState({
                        loading: false
                    });
                    this.props.history.push('/');
                })
                .catch((err) => {
                    console.log(err.response.data)
                   // let errors  ={email:'',password:''}
                    this.setState({
                        //errors11: err.response.data.errors,
                        errors : err.response.data.errors,
                        // error2:err.response.data,
                        loading: false
                    })
                })
        }
        render() {
            const { classes } = this.props;
            const { errors, loading,} = this.state;
            return (
                <Grid container className={classes.form}>
                    <Grid item sm />
                    <Grid item sm >
                        <img src={AppIcon} alt="app cion" className={classes.image} />
                        <Typography variant="h2" className={classes.pagetitle}>Login</Typography>
                        <form noValidate onSubmit={this.handleSubmit}>
                            <TextField id="email" name="email" type="email" label="Email" className={classes.textfeild}
                                helperText={errors.email} error={errors.email ? true : false} value={this.state.email} onChange={this.handleChnage} fullWidth />
                            <TextField id="password" name="password" type="password" label="Password" className={classes.textfeild}
                                helperText={errors.password} error={errors.password ? true : false} value={this.state.password} onChange={this.handleChnage} fullWidth />
                            {errors.general &&(
                                <Typography variant="body2" className={classes.customerror}>
                                    {errors.general}
                                </Typography>
                            )}
                            <Button type="submit" variant="contained" color="primary" className={classes.button}>Login </Button>
                        </form>
                    </Grid>
                    <Grid item sm />
                </Grid>
            )
        }
    }

    login.propTypes = {
        classes: PropTypes.object.isRequired
    }

    export default withStyles(styles)(login);

如果我发送电子邮件和密码错误,我的问题是在此代码中

93 | helperText={errors.email} error={errors.email ? true : false}value={this.state.email} onChange={this.handleChnage} fullWidth

这行我有错误,这是我的控制台日志

general: "email or password not match"

我该如何处理此类错误?


问题答案:

查看您的请求处理代码和响应,我可以看到错误响应在处理错误方面是不一致的。我认为您应该考虑将响应固定为一致的。我会尝试在提交的错误处理中替换行

errors : err.response.data.errors,

会为一般错误创造结构的东西:fe

errors : {...err.response.data.errors, general: err.response.data.general}


 类似资料:
  • 我有一个JSON数据,如下所示,其中的值应该基于验证中间值从内部和外部对象中取。 例如:如果cat=4,那么我应该创建一个对象,如下所示 我设法提取了所有除了如何找到material_id?下面是我的代码 null null

  • 问题内容: 我有以下代码。我想掌握用来创建内部类对象的外部类对象。我该怎么做? 编辑:好,你们中的一些人建议通过添加方法来修改内部类: 但是,如果我没有控制权来修改内部类,那(只是确认一下),我们还有其他方法可以从内部类对象中获取相应的外部类对象吗? 问题答案: 在内部类本身中,你可以使用。该表达式允许引用任何词法包围的实例,在JLS中被描述为。 我认为没有办法从内部类的代码之外获取实例。当然,你

  • 我目前正在进行一个与Firebase集成的Android项目,但是由于Firebase监听器的原因,我正在努力从Firebase实时数据库中检索类对象。 让我详细介绍一下我的项目,以便你能了解它的主要内容。我使用MVVM架构,我有两个活动,其中一个用于身份验证,另一个用于主要用途。 第一个活动包含注册、登录、密码重置片段第二个活动包含4个用于程序主要功能的片段 第一个活动中的片段使用共享的view

  • 本文向大家介绍对Java的面对对象编程中对象和引用以及内部类的理解,包括了对Java的面对对象编程中对象和引用以及内部类的理解的使用技巧和注意事项,需要的朋友参考一下 最近利用下班的时候看了看的think in java感觉再看 和第一次看大不一样 接下来说一下java中对象和引用的关系,以及内部类的概念。 1、java中一切都是对象  在java中是什么来操作者对象呢?答案是引用,这就好比C或者

  • 本文向大家介绍浅述Javascript的外部对象,包括了浅述Javascript的外部对象的使用技巧和注意事项,需要的朋友参考一下 Window 浏览器: > 1.外部对象就是浏览器提供的API -- **BOM** > 2.这些对象由w3c规定,由浏览器开发者设计并开发 > 3.这些对象分为2部分,其中BOM包含了DOM > 4.我们可以通过js访问这些对象 # 外部对象 > BOM (Brow

  • 目标 了解方法重载和重写 能够比较一个对象与另一个对象 了解如何和何时使用类变量和方法 重载方法 是时候了解一下 Person 类了。Person 现在比较有用,但没有达到应有的实用程度。我们首先通过重载Person 的方法来增强它。 创建两个具有相同名称和不同参数列表(即不同的参数数量或类型)的方法时,您就拥有了一个重载 方法。在运行时,JRE 基于传递给它的参数来决定调用您的重载方法的哪个变体