代码之家  ›  专栏  ›  技术社区  ›  soccerway

前端未显示来自服务器端的错误消息

  •  0
  • soccerway  · 技术社区  · 6 年前

    在服务器端登录失败时 res.status(403).json({ fail: "Login failed" }); setHelperText(failMessage); 如何在前端获取“登录失败”消息?

    创建错误时(createError.js:16个)

    server.js

    app.post('/service/login', async (req, res) => {
      try {
        const userEmail = req.body.email;
        const userPassword = req.body.password;
        const loginData = await UserModel.findAll({ where: { email: userEmail} });
        const password = loginData[0].password;
        const email = loginData[0].email;
        if(password === userPassword && email === userEmail){
         const privilege  = loginData[0].privilege;
          res.status(200).json({ success: true, privilege, email });
        }else{
          res.status(403).json({ fail: "Login failed" });
        }
      } catch (e) {
        res.status(500).json({ message: e.message });
      }
    });
    

    Login.js

    const fetchData = async () => {
      try {
        const res = await axios.post('http://localhost:8000/service/login', { email , password });
        console.log("Front End success message:"+res.data.success);
        if(res.data.success){
          setHelperText("Login successfully");
          setValue(res.data.privilege);
          setError(true);
        }
        else{
          const failMessage = res.data.fail;
          setHelperText(failMessage);
        }
      } catch (e) {
        console.log(e);
      }
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Manikandan J    6 年前

    如果响应不成功(本例中为403),则将执行catch块,因此将逻辑移到else块中,以在登录.js

    catch(e) {      
    const failMessage = e.response.data.fail;
    setHelperText(failMessage);
    // console.log(e.data.response); -> to print the server response
    }