MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Utilisation de mongo avec FLASK et python

Tout d'abord find_one renverra un seul dictionnaire ou Aucun s'il n'y a pas d'élément correspondant dans la collection. Je pense donc que page[0] équivaut à obtenir la valeur du dictionnaire de pages pour la clé 0

Si les documents retournés contiennent ObjectId comme _id vous ne pouvez pas simplement utiliser jsonify car, comme ObjectId n'est pas JSON sérialisable. Vous pouvez utiliser quelque chose comme ceci :

jsonify({ 'page': make_public_page({k:v for k, v in page.items() if k != '_id'}))

ou vous pouvez simplement supprimer _id en appelant page.pop('_id')

Vous pouvez également utiliser bson.json_util . Il contient des outils de conversion entre BSON et JSON.

from flask import Response 
from bson import json_util

Et puis remplacez jsonify avec quelque chose de similaire à ceci :

return Response(
    json_util.dumps({'page' : make_public_page(page)}),
    mimetype='application/json'
)

Modifier

Si vous voulez une manière courte et grossière de traiter le problème, vous pouvez le faire comme ceci :

from bson import json_util, ObjectId
import json

#Lets create some dummy document to prove it will work
page = {'foo': ObjectId(), 'bar': [ObjectId(), ObjectId()]}

#Dump loaded BSON to valid JSON string and reload it as dict
page_sanitized = json.loads(json_util.dumps(page))