언어 : 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이 더 깔끔!

+ Recent posts