TIL(Today I Learned)

[TIL] 05.12 개발일지

mkm101 2023. 5. 12. 20:55
반응형

오늘은 웹개발 5주차 강의를 마무리하고, 이외의 추가기능을 구현해보고싶어서

ChatGPT와 구글 바드 등 여러가지 인공지능 챗봇의 도움을 받아 팬명록 삭제 기능을 구현하였다.

이렇게 팬명록을 남길때, 자기만의 고유 비밀번호를 입력할 수 있도록 칸을 만들었고

댓글삭제 버튼을 눌렀을때 비밀번호를 입력하게 해서 올바른 비밀번호를 입력하게하고싶었다.

 

 

<JS CODE>

     function show_comment() {
        fetch('/guestbook').then((res) => res.json()).then((data) => {
            let rows = data['result']
            $("#comment-list").empty()
            rows.forEach((a) => {
              let name = a['name']
              let comment = a['comment']

              let temp_html = `<div class="card">
                            <div class="card-body">
                                <blockquote class="blockquote mb-0">
                                    <p>${comment}</p>
                                    <footer class="blockquote-footer">${name}</footer>
                                </blockquote>
                                <button type="button" class="btn btn-danger" data-id="123" id="comment-delete" >댓글 삭제</button>

                            </div>
                        </div>`
              $("#comment-list").append(temp_html)
            })
          })
      }

      function deleteComment() {
        var commentId = $(this).data("id");
        var password = prompt("비밀번호를 입력하세요: ", {
          type: "password"
        });
       
     
        if (password == "") {
          alert("비밀번호를 입력하세요!");
          return;
        }
     
        $.ajax({
          url: "/guestbook/delete/" + commentId,
          type: "POST",
          data: { password: password },
          success: function(data) {
            if (data.success) {
              alert(data['msg']);
              window.location.reload();
            } else {
              alert(data['result']);
            }
          }
        });
      }
     
      $(document).on("click", "#comment-delete", deleteComment);
     

<app.py>

@app.route("/guestbook/delete/<int:comment_id>", methods=["POST"])
def delete_comment(comment_id):
    password = request.form["password"]

    comment = db.fan.find_one({"_id": comment_id})
    if comment and comment["password"] == password:
        db.fan.delete_one({"_id": comment_id})
        return jsonify({"msg": "댓글이 삭제되었습니다!"})
    else:
        return jsonify({"result": "비밀번호가 틀렸습니다!"})
   

삭제 API 구현을 위와 같이 했지만,

 

서버에서 commentId를 받을수 없다는 에러가 떳다.

삭제버튼을 했을때 $(this).data("id")부분을 제대로 받지 못했을거라 생각 했고,

 

처음 $("#comment-delete")로 작성한 부분을

$(document).on("click", "#comment-delete", deleteComment);로 바꾸니 해결되었다.

이런 오류는 해결했지만 DB에 저장된 댓글이 삭제되지 않는 문제가 생겼다,.,.,.,,.,.,.,.,.,.,.,., 

 

 

반응형