팀 프로젝트도 3일차...
오늘은 아침부터 지각이었다.. 팀프로젝트라 더더욱이 늦고 싶지않았는데...
( 알람100개 켜놓기.. 컨디션 관리 꾸준히하기.. 메모.. )
오늘 하루 리뷰는 시작은 프로젝트도 어느정도 기능도 구현이 되었고 ( 많이 애를 먹었지만 🥲 ) 각자 작업한 걸 합쳐놓고 보니 그래도 팀원들과 함께 열심히 했던 결과물이라 그런지 뿌듯했다.
오늘의 TIL은 제일 구현하는 데 어려움을 겪었던 '좋아요'버튼이다.
목표했던 기능은
" 좋아요 버튼을 클릭하면 옆에 몇 개 인지 나타나고, 좋아요 수가 저장되어 새로고침을 하면 0으로 초기화가 되는 것이 아니라 저장된 내용을 불러오는 기능" 을 구현하고 싶었다.
이게 피드백 전 python 코드이다.
하지만 두개의 댓글 중 밑에 있는 댓글이 좋아요 수가 위에 있는 댓글 보다 더 많아지지 않았다.
(1번 댓글이 좋아요 4개, 2번 댓글이 좋아요 4개인 상황에서
2번에 좋아요를 누르면 1번이 5개가 되는 상황 )@app.route("/comments/like", methods=["POST"]) def comment_like(): like_receive = request.form['like_give'] # db.comments.insert_one({'like': int(like_receive)}) db.comments.update_one({'like': int(like_receive)}, {'$set': {'like': int(like_receive) + 1 }}) return jsonify({'msg': '좋아요!'})
function like_comment(like) { $.ajax({ type: "POST", url: "/comments/like", data: {like_give: like}, success: function (response) { alert(response["msg"]) window.location.reload() } }); }
여기부터가 피드백 받아 수정한 내용이다.
@app.route("/comments/like", methods=["POST"]) def comment_like(): like_receive = request.form['like_give'] like = db.comments.find_one({'num': int(like_receive)}) db.comments.update_one({'num': int(like_receive)}, {'$set': {'like': int(like['like']) + 1 }}) return jsonify({'msg': '좋아요!'})
function like_comment(like) { $.ajax({ type: "POST", url: "/comments/like", data: {like_give: like}, success: function (response) { alert(response["msg"]) window.location.reload() } }); }
- 피드백내용
수정 전에는 업데이트를 like값만 가지고 구현했었다.
오류가 생긴 이유는, like값이 중복이 됐을 때, 데이터베이스가 어디에서 증가가 일어났는지 몰라서 첫번째 값이 올라간 듯 하다.
키값은 고유한 값이어서 다른 값과 겹칠 수가 없는 값이기 때문에 num이라는 고유한 키값을 가지고 업데이트 해야한다.
- 나의 피드백 리뷰
그리고 num은 항상 num으로 receive받아야하고, comment는 commnet로 receive받아야한다고 생각했는데, 오늘 num을 like로도 receive받을 수 있다는 것을 알고, 생각을 좀 넓힐 필요도 있겠다고 느꼈다.
오늘로서 이제 '좋아요 버튼'을 어떻게 만드는지 알게 된 병아리가 되어 기쁘다! 삐약! 🐥
그제보다 어제 더 한단계 더 발전하신 감정이 글에 고스란히 녹아있네요
고생많으셨어요!