소개
게시글
질문&답변
2021.02.22
Boolean 값 update 문제
해결되었습니다. snake case로 설정해서 그렇게 설정 되었다고 생각했는데 isAnswered로 되어 있었습니다. 감사합니다!
- 0
- 11
- 445
질문&답변
2021.02.22
Boolean 값 update 문제
라우터는 post와 delete 전부 잘 실행됩니다. 패치는 update를 말하려고 했던 건데 잘못 이야기해서 혼선을 드린 것 같네요. 지금 하려는 것은 post 라우터 안쪽에서 answer create와 ask update를 실행하고 delete 라우터 안쪽에서 answer destroy와 ask update를 실행하는 것입니다.
- 0
- 11
- 445
질문&답변
2021.02.22
Boolean 값 update 문제
answer를 작성하면 answer 디비에 잘 들어가고, 다만 patch만 되지 않아서... 혹시 실수가 있는데 제가 모르는 건지ㅠㅠ 조언 부탁드립니다...
- 0
- 11
- 445
질문&답변
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
- 445
질문&답변
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
- 445