TIL: like btn

hihyeon_cho·2022년 11월 2일
1

TIL

목록 보기
3/101

내일배움캠프 3일차

팀 프로젝트도 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받을 수 있다는 것을 알고, 생각을 좀 넓힐 필요도 있겠다고 느꼈다.

오늘로서 이제 '좋아요 버튼'을 어떻게 만드는지 알게 된 병아리가 되어 기쁘다! 삐약! 🐥

profile
코딩은 짜릿해 늘 새로워 ✨

1개의 댓글

comment-user-thumbnail
2022년 11월 3일

그제보다 어제 더 한단계 더 발전하신 감정이 글에 고스란히 녹아있네요
고생많으셨어요!

답글 달기