소개
게시글
질문&답변
2021.02.22
Boolean 값 update 문제
해결되었습니다. snake case로 설정해서 그렇게 설정 되었다고 생각했는데 isAnswered로 되어 있었습니다. 감사합니다!
- 0
- 11
- 755
질문&답변
2021.02.22
Boolean 값 update 문제
라우터는 post와 delete 전부 잘 실행됩니다. 패치는 update를 말하려고 했던 건데 잘못 이야기해서 혼선을 드린 것 같네요. 지금 하려는 것은 post 라우터 안쪽에서 answer create와 ask update를 실행하고 delete 라우터 안쪽에서 answer destroy와 ask update를 실행하는 것입니다.
- 0
- 11
- 755
질문&답변
2021.02.22
Boolean 값 update 문제
answer를 작성하면 answer 디비에 잘 들어가고, 다만 patch만 되지 않아서... 혹시 실수가 있는데 제가 모르는 건지ㅠㅠ 조언 부탁드립니다...
- 0
- 11
- 755
질문&답변
2021.02.22
Boolean 값 update 문제
프론트 saga에서 answer 게시와 삭제는 아래와 같이 작성했습니다. // Add Answer function addAnswerAPI(data) { return axios.post(`/answers/${data.askId}`, data); } function* addAnswer(action) { try { const result = yield call(addAnswerAPI, action.data); yield put({ type: ADD_ANSWER_SUCCESS, data: result.data, }); } catch (err) { yield put({ type: ADD_ANSWER_FAILURE, error: err.message, }); } } // REMOVE ANSWER function removeAnswerAPI(data) { return axios.delete(`/answers/${data.answerId}/delete/${data.askId}`); } function* removeAnswer(action) { try { const result = yield call(removeAnswerAPI, action.data); yield put({ type: REMOVE_ANSWER_SUCCESS, data: result.data, }); } catch (err) { yield put({ type: REMOVE_ANSWER_FAILURE, error: err.message, }); } } 그리고 백엔드 코드에서 answer 게시(+연결된 ask의 is_answered: true)로 변경, answer 삭제(+ 연결된 ask의 is_answered:false)로 변경하는 코드는 다음과 같이 작성했습니다. // 특정 질문에 대답하기 POST /answers/askId router.post("/:askId", isLoggedIn, async (req, res, next) => { try { const ask = await Ask.findOne({ where: { id: req.params.askId }, }); if (!ask) { // 해당 질문이 없으면 리다이렉트 return res.status(403).send("존재하지 않는 ask입니다."); } // 해당 질문이 있으면 is_answered를 true로 변경 await Ask.update( { is_answered: true, }, { where: { id: req.params.askId }, } ); const answer = await Answer.create({ content: req.body.answer, linked_ask_id: req.params.askId, target_user_id: req.user.id, }); // 리다이렉트 걸어주면 좋겠다... res.status(201).json(answer); } catch (err) { console.error(err); next(err); } }); // 특정 답변 삭제하기 router.delete( "/:answerId/delete/:askId", isLoggedIn, async (req, res, next) => { try { // 해당 답변에 연결된 ask의 is_answered 컬럼값 false로 변경 await Ask.update( { is_answered: false, }, { where: { id: req.params.askId }, } ); // 답변 삭제 await Answer.destroy({ where: { id: req.params.answerId, target_user_id: req.user.id, }, }); res.status(201).send("답변을 삭제했습니다."); } catch (err) { console.error(err); next(err); } } );
- 0
- 11
- 755
질문&답변
2021.02.22
Boolean 값 update 문제
Executing (default): SELECT `id`, `email`, `username`, `password`, `created_at` AS `createdAt`, `updated_at` AS `updatedAt` FROM `users` AS `User` WHERE `User`.`id` = 1; Executing (default): SELECT `id`, `nickname`, `content`, `is_answered` AS `isAnswered`, `created_at` AS `createdAt`, `updated_at` AS `updatedAt`, `target_user_id` FROM `asks` AS `Ask` WHERE `Ask`.`id` = '10'; Executing (default): INSERT INTO `answers` (`id`,`content`,`created_at`,`updated_at`,`target_user_id`,`linked_ask_id`) VALUES (DEFAULT,?,?,?,?,?); 위의 쿼리는 is_answered 기본값을 true로 변경하려고 할 때 뜨는 쿼리입니다.
- 0
- 11
- 755