Delete 코드에 대해서 알아보겠다.
pymongo 에서 사용하는 코드다.
db.users.delete_one({'name':'bobby'})
users 에 있는 'bobby' 라는 'name'을 가진 데이터를 삭제하는 코드다.
이걸 활용하여
5주차 마지막 버킷리스트에 활용해보겠다.
해당 화면처럼 첫번째 버킷 리스트에있는 삭제하기 버튼을 누르면, 해당 버킷리스트가 데이터도 삭제되고 화면에서도
지워지는 형식으로 만들어보겠다.
@app.route("/bucket/delete", methods=["POST"])
def bucket_delete():
number_receive = request.form['number_give']
db.bucket.delete_one({'num': int(number_receive)})
return jsonify({ 'msg' : '삭제 완료!'})
이와 같은 코드로 서버를 만들어주었다.
POST 형식의 delete 창구를 만들어주었다.
index에서 number_give 로 가져와서 number_receive 지정해주고
int(number_receive) 코드로 해당 번째의 숫자를 가져온다.
그 가져온 숫자를 가지고 있는 데이터를 삭제하는거고
삭제가 완료되면 msg -> 삭제 완료! alert가 뜨게끔 했다.
let temp_html = ``
if (done == 0) {
temp_html = `<li>
<h2>✅ ${bucket}</h2>
<button onclick="done_bucket(${num})" type="button" class="btn btn-outline-primary">완료!</button>
</li>`
} else {
temp_html = `<li>
<h2 class="done">✅ ${bucket}</h2>
<button onclick="delete_bucket(${num})" type="button" class="btn btn-outline-primary">삭제하기</button>
</li>`
}
$('#bucket-list').append(temp_html)
index.html로 넘어와서
`<li>
<h2 class="done">✅ ${bucket}</h2>
<button onclick="delete_bucket(${num})" type="button" class="btn btn-outline-primary">삭제하기</button>
</li>`
해당 부분을 넣어주었다,
자세하게 보자면
<button onclick="delete_bucket(${num})" type="button" class="btn btn-outline-primary">삭제하기</button>
이 버튼을 넣어준것이다.
원래는 삭제 버튼이 없었다.
i 번째의 num에 delete_bucket() function을 구현하도록 버튼을 만들어준것이다.
function delete_bucket(num) {
$.ajax({
type: "POST",
url: "/bucket/delete",
data: { number_give : num },
success: function (response) {
alert(response["msg"])
window.location.reload()
}
});
}
해당 function 을 맨 밑에 만들어주었다.
ajax 콜을 해주는거다.
post 형식에 bucket/delete 창구에 데이터를 전달할거고
전할 데이터는 num -> number_give 형식으로 전달한다.
성공하면 msg를 띄우고
윈도우를 새로고침 하게 만드는 코드를 넣었다.
자이제 로컬파일로 가서 확인해보자
삭제하기 누르니 삭제 완료! 라는 알림이 떴다.
말끔히 지워진것을 볼 수 있다.
mongoDB에서도 삭제된것을 확인했다.
이 작업을 하면서 한 2시간정도 잡아먹은 것 같다.
제일 처음 버벅거린건
num_receive 와 number_receive를 num_receive로 통일해서 쓰다보니 내가 쓰면서도 많은 혼선이 있었다.
db.bucket.delete_one({'num': int(number_receive)})
그리고 여기 int(number_receive) 부분에 int를 넣어주지 않아서 계속 오류가 떴었다.
계속 왜 이런 문제가 생기지 했을때 우선
뼈대부터 확실하게 살펴보았다.
뼈대를 다 맞추어 보니
알림은 정상적으로 떴다.
근데 데이터가 지워지지 않았다.
그래서 기술 매니저님께 질문을 해서 같이 코드를 공유하고 하나씩 살펴보다가 겨우 찾은 문제였다.
많은것을 배웠고 하나하나 코드 하나하나 더 살펴보는 습관을 길러야겠다.
'📘 𝐭𝐢𝐥 > 일간 회고' 카테고리의 다른 글
[23.01.18] (0) | 2023.01.18 |
---|---|
[23.01.16] (1) | 2023.01.16 |
[23.01.14] (0) | 2023.01.14 |
[23.01.13] (0) | 2023.01.13 |
[23.01.12] (0) | 2023.01.12 |