소개
게시글
질문&답변
Boolean 값 update 문제
해결되었습니다. snake case로 설정해서 그렇게 설정 되었다고 생각했는데 isAnswered로 되어 있었습니다. 감사합니다!
- 0
- 11
- 767
질문&답변
Boolean 값 update 문제
라우터는 post와 delete 전부 잘 실행됩니다. 패치는 update를 말하려고 했던 건데 잘못 이야기해서 혼선을 드린 것 같네요. 지금 하려는 것은 post 라우터 안쪽에서 answer create와 ask update를 실행하고 delete 라우터 안쪽에서 answer destroy와 ask update를 실행하는 것입니다.
- 0
- 11
- 767
질문&답변
Boolean 값 update 문제
answer를 작성하면 answer 디비에 잘 들어가고, 다만 patch만 되지 않아서... 혹시 실수가 있는데 제가 모르는 건지ㅠㅠ 조언 부탁드립니다...
- 0
- 11
- 767
질문&답변
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
- 767
질문&답변
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
- 767
질문&답변
Boolean 값 update 문제
백엔드 콘솔에는 `is_answered` TINYINT(1) DEFAULT false 이렇게 뜹니다. 전체는 Executing (default): CREATE TABLE IF NOT EXISTS `asks` (`id` INTEGER NOT NULL auto_increment , `nickname` VARCHAR(30), `content` VARCHAR(1500) NOT NULL, `is_answered` TINYINT(1) DEFAULT false, `created_at` DATETIME NOT NULL, `updated_at` DATETIME NOT NULL, `target_user_id` INTEGER, PRIMARY KEY (`id`), FOREIGN KEY (`target_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci; Executing (default): SHOW INDEX FROM `asks` FROM `asker` 이렇게 뜨고요! underscored: true, 스네이크 케이스로 설정을 변경했습니다. 그래서 문제가 없다고 생각했는데, 값이 변경이 되지 않네요..ㅜㅜ
- 0
- 11
- 767
질문&답변
BOOLEAN
(사진) 말씀해주신대로 설정했더니 값이 들어갔습니다! 이후에... 이제 게시물이 제대로 올라가면 is_answered 값을 true로 변경하려고 하는데 1. 위의 사진처럼 delete 라우트에서 delete와 patch 작업을 동시에 해주어도 되나요? 2. 그리고 위와 같은 방식으로 update를 했더니 default 값으로 설정되었던 0의 값이 1로 변경되지 않는 문제가 생겼습니다. ㅠㅠ 두 가지 질문 드립니다.
- 0
- 4
- 313
질문&답변
Class 방식으로 바꾸고 난 이후
감사합니다...ㅜㅜㅜ
- 0
- 4
- 188
질문&답변
Class 방식으로 바꾸고 난 이후
오늘 계속 수정해보았는데... 아무리 해도 외래키가 생성되지 않아서 질문을 드립니다ㅠㅠ https://github.com/Askers/asker-back/tree/dev/models user, ask, answer 세 가지 모델에 대한 관계를 정의해두었는데 혹시 확인 부탁드려도 될까요? 도저히 원인을 모르겠습니다 ㅠㅠ 한 부분 뿐만 아니라 전체 관계가 정의되지 않는 상태입니다... ㅜ
- 0
- 4
- 188
질문&답변
sequelize 연결 시 테이블간 관계에 대한 질문입니다.
선생님, 익명인 경우에도 정보를 저장해야 할까요?
- 0
- 6
- 202