본문 바로가기
☕ 따뜻한 개발 한 잔

[몽고db/flask] 내가 원하는 특정 댓글 삭제하기

by 따따시 2022. 11. 1.

🥸 포인트 1

- 애초에 댓글을 보여주는 메소드를 구현할 때 '게시물번호(고유번호)'를 delete 메소드의 파라메터로 넣어주었다. 

 

<p style="display: none">${membernum}</p>
<p>${comment}</p>
 <footer class="blockquote-footer">${name}</footer>
<button type="button" onclick="delete_comment(${membernum})">삭제</button>

 

        function show_comment() {

            $('#comment-list').empty()
            $.ajax({
                type: "GET",
                url: "/homework",
                data: {},
                success: function (response) {

                   /* db에서 직접 받아오는 건 app.py에서 하고 */
                    let rows = response['comments']

                    /* for문 돌리는건 */
                    for(let i = 0 ; i < rows.length ; i++){

                        let membernum = rows[i]['membernum']
                        let name = rows[i]['name']
                        let comment = rows[i]['comment']

                        let deletenum = $('#deletenum')


                        let html_temp=`
                                    <div class="card">
                                        <div class="card-body">
                                            <blockquote class="blockquote mb-0">
                                                <p style="display: none">${membernum}</p>
                                                <p>${comment}</p>
                                                <footer class="blockquote-footer">${name}</footer>
                                                <button type="button" onclick="delete_comment(${membernum})">삭제</button>
                                            </blockquote>
                                        </div>
                                    </div>`

                        $('#comment-list').append(html_temp)
                    }


                }
            });
        }

 

 

 

🥸 포인트 2

 let membernum = rows[i]['membernum']

생성했던 이 membernum은 DB에 댓글 내용을 넣어주는 기능(post)을 만들때, 

백엔드 단에서 아래와 같이 객체를 만들어 넘겨준 것이다.  (클라이언트에게 받아온 내용이 아니다)

    count = list(db.homeworktest.find({}, {'_id': False}))
    num = len(count) + 1

먼저, db에 있는 데이터 개수를 쫙 뽑아오고, 그 갯수만큼을 len() 을 사용하여 개수 + 1로 num에 번호를 매겨준 것

( => 쉽게 말해, 기존 게시물 개수 + 1 = 새로운 게시물 번호 )

 

 

@app.route("/homework", methods=["POST"])
def homework_post():

    count = list(db.homeworktest.find({}, {'_id': False}))
    num = len(count) + 1

    name_receive = request.form['nickname_give']
    comment_receive = request.form['comment_give']


    doc = {
        'membernum' : num,
        'name' : name_receive,
        'comment': comment_receive,
    }

    # 저장
    db.homeworktest.insert_one(doc)
    return jsonify({'msg': '응원 저장이 완료되었습니다!!'})

 

 

🥸 포인트 3

- 댓글삭제 메소드

나는 포인트1에서 받아왔던 그 membernum을 백으로 넘겨주는 작업만을 설정했다. 

   function delete_comment(membernum){

            $.ajax({
                type: 'POST',
                url: '/deletecomment',
                data: {'delete_give': membernum },
                success: function (response) {
                    alert(response['msg'])
                    window.location.reload()
                }
            })

        }

 

🥸 포인트 4

포인트3에서 받아온 '고유 게시물번호'를 삭제하는 명령어 내릴 때 int 로 형변환 해주기 

@app.route("/deletecomment", methods=["POST"])
def deletecomment_post():

    delete_receive = request.form['delete_give']
    db.homeworktest.delete_one({'membernum': int(delete_receive)})
    return jsonify({'msg': '데이터 삭제가 완료되었습니다'})

댓글