언어 : python
프레임워크 : flask
db : mongoDB
1. 상황
- 서버에서 몽고디비 데이터를 받아와 클라이언트로 던지려고 하는데 서버 500에러가 뜸
article = db.memo.find_one({'idx': int(idx)})
return jsonify({"article":article})
- 에러코드 : TypeError: Object of type ObjectId is not JSON serializable
2. 원인
- 몽고디비에서 받아온 데이터가 json 타입이 아니어서 서버에서 클라이언트로 데이터를 전송하지 못함
- 몽고디비에 데이터가 삽입될때 _id 부분이 자동 삽입됨.
3. 해결방법1
- _id 제외 데이터 받아오기
article = db.memo.find_one({'idx': int(idx)}, {'_id': False})
4. 해결방법2
from bson.json_util import dumps
return jsonify({"article": dumps(article)})
- 라이브러리 추가 + dumps로 데이터 감싸주기
해결방법1이 더 깔끔!
'프로그래밍 > 개발이슈' 카테고리의 다른 글
invalid or unexpected token (0) | 2022.05.10 |
---|---|
EB 와 MongoDB의 호환 문제 (0) | 2022.05.09 |
Uncaught SyntaxError: missing ) after argument list (at (0) | 2022.05.02 |
파이썬 코드 업데이트 반영 안될 때 (디버깅) (0) | 2022.05.01 |
Jinja2 데이터 인식 오류 (0) | 2022.04.29 |