Сообщение об ошибке со стороны сервера не отображается в интерфейсе пользователя - PullRequest
0 голосов
/ 29 мая 2020

При сбое входа в систему на стороне сервера res.status(403).json({ fail: "Login failed" }); сообщение со стороны сервера передается во внешний интерфейс setHelperText(failMessage); Как я могу получить сообщение «Ошибка входа в систему» ​​во внешнем интерфейсе?

Отображается ошибка в chrome console >> Ошибка: запрос завершился неудачно с кодом состояния 403 при createError (createError. js: 16) при урегулировании (расчет. js: 17)

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 Ответ

1 голос
/ 29 мая 2020

Если ответ не был успешным (403 в вашем случае), будет выполнен блок catch, поэтому переместите ваш logi c внутрь блока else, чтобы поймать блок в Login. js

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