01. 미니 프로젝트

    MongoDB의 ObjectId 최대한 간단하게 처리해서 프론트로 넘겨주기 ✔️

    MongoDB의 ObjectId 최대한 간단하게 처리해서 프론트로 넘겨주기 ✔️

    아무리 정리하려고 해도 이상하게 매끄럽게 한 두 문장으로 문제 상황과 해결이 정리가 안 된다… 감안하고 봐주시길. 배경 스토리:MongoDB의 데이터를 프론트로 보내주려고 할 때, 발목을 잡는 것이 MongoDB 고유 객체인 ObjectId이다. 이걸 그대로 프론트로 실어 보내려고 하면 에러가 난다. 그래서 사용하는 게 json_util.dupms()로 ObjectId를 한 번 파이썬이 인식 가능한 형태로 풀어주는 것이다. 그러면 ObjectId는 풀어지는데 다른 멀쩡한 문자까지 깨지게 되어, 그걸 또다시 정상적으로 바꿔주기 위해 json.loads()를 써주고 마지막으로 포장하는 게 jsonify(). 이렇게 3단계를 거쳐서 프론트로 보내주고 있었다. GET 요청의 응답으로 Response객체가 아닌 ..

    jsonify()는 뭘 어떻게 포장해서 프론트로 보내는가 ✔️

    발단:app.py에서 return jsonify(”쌩 메세지”)로 보내고, 프론트에서 success: function(response) { alert(response) } 해도 alert(response[’msg’]) 때와 똑같은 형식으로 잘 뜨는 것을 발견했다. 이유가 궁금했다. response를 jsonify로 안 보내면 어떻게 되지?⇒ jsonify()로 안 보내도 된다. 이 포스트에 연구해놓았다.response를 jsonify로 잘 보내도, ‘키’값이 없는데 어떤식으로 저장돼서 보내지고 출력되는 거지? ⇒ 결론부터 말하면, jsonify()는 위치 인자를 그냥 나열하는 것(jsonify(”메세지1”, “메세지2”, …))과 키워드 인자쌍을 주는 방식(jsonify({”msg”: “메세지1”, “m..

    비번 확인해서 삭제시키기 + 실패시 에러 메세지 띄우기 ✔️

    비번 확인해서 삭제시키기 발단: DELETE 요청 실패시 서버에서 반환한 errorhandler 안의 메세지를 프론트가 적절히 받지 못해 임의의 alert 내용을 띄우도록 했었는데, 이 사항을 뜯어본 과정을 기록해 보았다. 결론부터 말하면, Ajax의 error 옵션을 사용해서 추출해낼 수 있었다. Ajax 삭제 요청시 “실패하면”의 조건을 달고 싶을 때 error 옵션을 쓴다. “성공하면”의 조건을 달 때 success 옵션을 쓰는 것과 같이. 아래는 템플릿 그대로 “실패하면” 콜백에게 인수 3개 쥐어주고 뭐가 나오는지 실험해 본 결과이다.Ajax의 error 옵션 실험:# app.py @app.route("/api/comments/delete/", methods=["DELETE"]) def delet..

    HTML 스크립트 태그 내에서 제이쿼리 이벤트가 무시되는 에러 해결 ✔️

    이걸 그냥 실행시키면 id=”official”속성을 가진 문서 객체가 생성되기도 전에 저 스크립트를 실행하고 넘어가게 되어 아무 일도 일어나지 않는다. 이를 방지하기 위해 두 가지 해결책이 있다: // 1. // 2. 둘 모두 잘 동작함을 확인했다. 그런데 1번이나 2번이나, “official”이라는 id를 가진 버튼에 마우스를 올릴 때마다 반복되서 실행되는데 그건 어떤 원리로 가능한 건지 모르겠다. ⇒ 저 함수들은 이벤트를 ‘연결지어줌’을 완료한 것이기 때문일까?개인적으로 2번이 더 이해가 안가고 1번이 더 안전하고 확실해 보인다. 앞으로 1번 방식을 사용하기로 한다. 참고로:부트스트랩 버튼을 해주고 class를 부트스트랩 버튼 클래스들로 똑같이 채우기만 하면 똑같은 모양으로 만들어지는 신기한 현상을 ..