MongoDB CRUD를 사용해서 팀원들을 소개하는 미니 프로젝트를 Python의 웹 프레임워크인 Flask로 구현해보는 과정에서 db에 담긴 내용을 수정하는 과정에서 js로 했던 방식과 다른 부분이 있었다.
js에서 mongodb update하는 방식 글
https://velog.io/@jangdu/5node.js-POST%ED%95%A0%EB%95%8C-id-%EB%84%A3%EC%96%B4-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0-with.DB-Update
flask
에서 UPDATE 할 때,
즉 html에서 UPDATE요청을 받을 때
이 글은 mongoDB에는
{_id: id, name: name, comment: comment}
대충 이런식으로 데이터들이 여러개 저장되어 있고
여기서 id는 직접 정해서 넣어줬다.
- 직접 정해서 넣어주는 이유는 mongoDB에 POST할 때
_id
값을 명시해주지 않으면,
mongoDB
에서 알아서_id
값을 넣어서DB
에 저장해준다.
그_id
값은find()
이런거로 접근을 못하게 몽고에서 막아둠
그래서 특정 값 수정이나 삭제할 때 동명이인 같은거 걸러주려고 _id값을 넣어주고 POST해줌
(이름으로 검색하면 같은 이름 중에 삭제됨)
venv
가상환경에서 진행하며,
각 라이브러리들은 이미 설치되고 mongoDB도 세팅한 상태
라고 가정하고 작성했다.
// app
@app.route("/guestbook", methods=["UPDATE"])
def guestbook_update():
# request 받기
num_receive = request.form['num_give']
comment_receive = request.form['comment_give']
# db.Collection.update({ matchQuery }, { updateQuery }, { optionQuery }) - updateMany
currentId = {'_id' : num_receive}
newValues = {'$set': {'comment': comment_receive}}
db.fanm.update_one(currentId , newValues )
# update_one updateOne
print(type(num_receive), comment_receive)
return jsonify({'msg': '수정 완료!'})