我正在嘗試顯示一條錯誤訊息,如果用戶已經注冊,我將在后端拋出該訊息,但我沒有得到我想要的結果。
后臺代碼:
module.exports.register = asyncHandler(async (req, res) => {
const { fullname, email, password } = req.body;
let user = await User.findOne({ email: email });
if (user) throw new Error("Email e/ou senha inválidos!");
user = await User.create({ fullname, email, password });
if (user) {
res.json({
_id: user._id,
name: user.fullname,
email: user.email,
token: tokenGenereator(user._id),
});
} else {
throw new Error("algo deu errado");
}
前端代碼:
export const register = ({ fullname, email, password }) => {
return async (dispatch) => {
try {
const config = {
headers: {
"Content-type": "application/json",
},
};
const data = await axios.post(
"http://localhost:5000/api/register",
{
fullname,
email,
password,
},
config
);
dispatch(
uiActions.showNotificatoin({
variant: "success",
message: "Usuário cadastrado com sucesso!",
})
);
localStorage.setItem("userInfo", JSON.stringify(data));
} catch (error) {
console.log(error.response.data.error)
}
};
};
這是我在控制臺上得到的結果。

我該怎么做才能顯示我拋出的訊息?
uj5u.com熱心網友回復:
您必須在沒有任何捕獲層的情況下拋出錯誤。你可能想做這樣的事情
if (user)
return res.status(409).json({ message: "Email e/ou senha inválidos!" });
在前端,您需要捕獲錯誤并像這樣使用錯誤
if (error.response && error.response.data.message) {
// custom message you sent from backend
console.log(error.response.data.message);
} else {
// generic error message
console.log(error.message);
}
它適用于您的情況。但理想情況下,對于大型專案錯誤應該從控制器存盤庫中拋出,并且必須由外層捕獲,并且作為回應將執行上述作業。
uj5u.com熱心網友回復:
HTTP 回應代碼用于從后端向前端拋出錯誤 HTTP 回應狀態代碼指示特定 HTTP 請求是否已成功完成。閱讀有關 HTTP 回應代碼的更多資訊。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
200狀態代碼表示正常狀態。409狀態代碼表示沖突狀態。
后端代碼:
if (!user) { // by deafult ok status
res.json({
_id: user._id,
name: user.fullname,
email: user.email,
token: tokenGenereator(user._id),
});
} else { // in case of user found
res.status(409).json("algo deu errado");
}
前端代碼:
export const register = ({ fullname, email, password }) => {
return async (dispatch) => {
try {
const config = {
headers: {
"Content-type": "application/json",
},
};
const data = await axios.post(
"http://localhost:5000/api/register",
{
fullname,
email,
password,
},
config
);
dispatch(
uiActions.showNotificatoin({
variant: "success",
message: "Usuário cadastrado com sucesso!",
})
);
localStorage.setItem("userInfo", JSON.stringify(data));
} catch (error) {
if (error.response && error.response.data.message===409) {
alert('user already exist');
} else {
console.log('No Internet Connection');
}
}
};
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/322884.html
下一篇:使用Socketio拖放
