[ TIL 05/23 ] NoSQL 게시물 삭제 기능

JoonQpa·2022년 5월 23일
0

TIL

목록 보기
7/27
  • 🔍NoSQL 데이터 삭제시 주의 사항

    : 게시물과 댓글이 관계형 데이터가 아닐때, 게시물을 삭제하면 댓글에 대한 데이터는 삭제되지 않고, 그대로 남아 있게 된다는 문제점이 있다.



📌게시물 삭제


이러한 게시글에는 다음과 같은 데이터베이스 형식을 가지게 된다.

이렇게 articlecomment 컬렉션에 따로 담아지게 되는데,

NoSQL일때는 게시물을 삭제해도 comment의 정보는 그대로 남게 된다.

📌코드 예시

게시물 삭제 코드

# 게시물 지우기
@app.route("/article/<article_id>", methods=["DELETE"])
@authorize
def delete_article_detail(user, article_id):

    article = db.article.delete_one(
        {"_id": ObjectId(article_id), "user": user["id"]})
    if article.deleted_count:
        return jsonify({"message": "success"})

    else:
        return jsonify({"message": "fail"}), 403 # 권한이 없었다
        

게시물과 해당 게시글 댓글을 모두 삭제하는 코드

# 게시물 지우기
@app.route("/article/<article_id>", methods=["DELETE"])
@authorize
def delete_article_detail(user, article_id):

    article = db.article.delete_one(
        {"_id": ObjectId(article_id), "user": user["id"]})
    
    # 지우는 게시글의 댓글들 모두 지우기
    comment = db.comment.delete_many(
        {"article": article_id, "user": user["id"]})
        
    if article.deleted_count:
        return jsonify({"message": "success"})

    else:
        return jsonify({"message": "fail"}), 403 # 권한이 없었다

🔑 데이터를 모두 삭제해주는 db.comment.delete_many() 사용해주자.



게시글의 ID가 댓글의 데이터 베이스에 어떻게 저장되어 있는지 확인하고, 헷갈리지 않고 변수를 잘 지정해주면 간단하게 해결할 수 있다. (20분간 '아니 왜 안되는데' 했던 이유)




롤 데이터 크롤링을 성공적으로 팀프로젝트 머신러닝 모델에 적용시킨게 너무 뿌듯했다.

그러는 와중에 목표가 생겼는데,

매주 미니 프로젝트를 진행하면서 단순 데이터 크롤링이 아니라, 데이터 분석 결과를 한곳에 모아서 서비스하는

나만의 웹사이트를 만들어보고 싶어졌다.

그리고 그 결과, 즉 지표들이 나오게된 과정과 이유를 상세하게 설명해주는 컨텐츠를 붙여서 관리하면 후에 큰 도움이 될 것 같다.

아 사이트 이름 뭘로할까나😋

profile
Intuition factory: from noob to pro

0개의 댓글