답변 감사합니다
알려주신대로 하니까 일단 에러 메세지를 얻어올수 있었어여
에러 메세지를 스테이트 변수에 저장하고 그리고 알림 메세지가
한번만 출력되도록 하기 위해 아래처럼 고쳤습니다
카테고리
세부 분야
풀스택
해결 여부
미해결
20.11.09 13:09 작성 조회수 169
0
안녕하세요 zerocho 님
질문이 있습니다.
현재 라우터 로직의 403 에러에 해당할 경우 (본인의 글을 리트윗 하거나 이미 리트윗한 글을 리트윗할때) 아래와 같이 응답을 하는데
if (!post) {
return res.status(403).send('존재하지 않는 게시글입니다.');
}
if (req.user.id === post.UserId || (post.Retweet && post.Retweet.UserId === req.user.id)) {
return res.status(403).send('자신의 글은 리트윗할 수 없습니다.');
}
function retweetAPI(data) {
console.log("data : ", data);
return axios.post(`/post/${data}/retweet`);
}
function* retweet(action) {
console.log("saga 실행 확인");
try {
console.log("retweetAPI 호출 before");
const result = yield call(retweetAPI, action.data);
console.log("retweetAPI 호출 after");
console.log("result : ", result);
yield put({
type: RETWEET_SUCCESS,
data: result.data,
});
} catch (err) {
console.error("retweet error from saga : ", err);
yield put({
type: RETWEET_FAILURE,
error: err,
});
}
}
case RETWEET_FAILURE:
draft.retweetLoading = false;
draft.retweetError = action.error.message;
break;
const onRetweet = useCallback(() => {
if (!id) {
return alert('로그인이 필요합니다.');
}
dispatch({
type: RETWEET_REQUEST,
data: post.id,
});
alert("retweetError : " + retweetError)
if (retweetError != "") {
notification.open({
message: '알림 메세지',
description:
'본인의 글은 리트윗할수 없습니다 : ', retweetError,
onClick: () => {
console.log('Notification Clicked!');
},
});
}
}, [id]);
return res.status(403).send('자신의 글은 리트윗할 수 없습니다.');
답변을 작성해보세요.
1
terecal
질문자2020.11.09
답변 감사합니다
알려주신대로 하니까 일단 에러 메세지를 얻어올수 있었어여
에러 메세지를 스테이트 변수에 저장하고 그리고 알림 메세지가
한번만 출력되도록 하기 위해 아래처럼 고쳤습니다
1
조현영
지식공유자2020.11.09
yield call에서 403에러가 나면 바로 catch로 갑니다. retweet after가 안 실행되는 게 당연합니다.
draft.retweetError = action.error.response.data로 해보세요.
0
답변 3