카테고리 없음

josnify insert_id dump 낙서장 str -> ObjectId

taehyeki 2021. 12. 30. 17:41

 

jsonify는 JSON 데이터를 내보내도록 제공하는 flask의 함수이며 기본 헤더가 'content-type': 'application/json'로 되어 있는 flask.Response() 객체를 리턴한다.

 

jsonify : 딕셔너리 , 리스트를 매개변수로 받을 수 있다.

json.dumps : jsonify 보다 더 다양한 type을 받을 수 있다고 나와있다.

from bson.json_util import dumps

 

콘텐츠 타입은 아래와 같다.

jsonify : application/json

json.dumps : text/html; charset=utf-8

return 값을 jsonify나 dumps를 안쓰고 그냥 dictionary로 했을 경우에도 : application/json

따라서 그냥 jsonify주지 않아도 잘 갔던 것 같다.

 

jsonify는 일부형식을 못반환한다고 한다.

 

mongoDB에서 ObjectId를  jsonify로하면 오류가 나지만 dumps로 사용했더니 오류가 나지 않았다.

Object of type ObjectId is not JSON serializable

 

 

 

mongoDB에 데이터를 추가하고 그 데이터를 바로 js로 보내려고하는데

pymongo.results.InsertOneResult라고 떴다. 물론 dump를 사용해도 안되었다.

TypeError: Object of type InsertOneResult is not JSON serializable 

 

InsertOneResult 객체엔 문서 고유 ID인 insert_id 속성 내장이 되어있다고한다. 따라서

방금추가한것.insert_id를 통해서 find_one으로 올린걸 찾아서 보내는 방식을 사용하기로했다.

insert_one객체에 .insert_id하면 아이디값 반환해준다.

objectid변환방법

str인 objectid를 objectId화로 시킬려면 아래의 경로를 통해 objectid를 import해서 변환해주자 objectId(str)

from bson.objectid import ObjectId