MongoDb , flask TypeError 해결방법

김도형 (르베니아)·2021년 7월 23일
1

웹개발 기초

목록 보기
7/10
post-custom-banner

TypeError

몽고 Db에 있는 데이터를 flask를 이용하여 데이터를 넘기려 하는데..

@app.route('/test/do', methods=['GET'])
def post_test():
 test = list(db.user.find({},{'_id': False})
    return jsonify({'data': test})

현재의 방식으로 데이터를 넘기게 된다면

TypeError: Object of type ObjectId is not JSON serializable

라는 오류를 접하게 될것이다.

이런경우 간단하게 json 방식으로 바꿔주면 된다고 생각했다.

dumps()

from bson.json_util import dumps
.
.
.
return jsonify({'data': dumps(test)})

현재의 방식으로 코드를 수정하여 데이터를 넘겨봤다.

html콘솔 화면에서

[{"img": "123", "menu": "123", "price": "123", "category": "\ub098\ubb3c", "hide": "0", "user_id": {"$oid": "60f951034dba7a2f1e9a14e0"}}, {"img": "qwe", "menu": "qwe", "price": "qwe", "category": "\uae40\uce58", "hide": "0", "user_id": {"$oid": "60f951104dba7a2f1e9a14e2"}}, {"img": "zxc", "menu": "zxc", "price": "zxc", "category": "\uae40\uce58", "hide": "0", "user_id": {"$oid": "60f951384dba7a2f1e9a14e4"}}]

데이터가 잘넘어간거처럼 보이나. str타입으로 넘어왔다..
혹시 몰라 .length를 해보니.. 길이가 411
아무리봐도 내가 원하는 dictionary가 아니다.

JSON.parse()

이런경우 JSON.parse()를 사용하여 dictionary형식으로 변경가능하다.

let a = JSON.parse(test)

맨밑를 본다면 딕셔너리로 잘넘어온것을 확인가능하다!

profile
한다. 간다. 해낸다.
post-custom-banner

0개의 댓글