【问题标题】:How to return .find() as a response using Flask?如何使用 Flask 返回 .find() 作为响应?
【发布时间】:2021-02-25 07:41:10
【问题描述】:

我正在学习 Flask,我想将从 pymongo 获得的文档附加到 ret 中并返回其中的 20 个作为响应。 我在网上找到了很多解决方案,但我找不到任何解决方案。 感谢您的宝贵时间。

这是打印结果:
{'_id': ObjectId('5f6d8b87c8dcc2089446a153'), 'id': '5959764021', 'quiz1': 8, 'quiz2': 3, 'quiz3': 6, 'quiz4': 2, 'quiz5': 2, “总和”:21}

TypeError:“ObjectId”类型的对象不是 JSON 可序列化的

@app.route('/get')
def findScore():
  id_param= str(request.args.get('id'))
  ret = dict()
  cursor = db.scores.find({"id": { "$gt": id_param }}).sort("id",1).limit(20) #ascending
  for document in cursor:
    print(document)
    ret = document
    
  #print(str(ret))
  return jsonify(ret)

app.run()

【问题讨论】:

    标签: python flask pymongo


    【解决方案1】:

    问题在于objectidtype() 是一个实例。

    您可以在返回值之前使用json_utils 处理BSON 类型。

    @app.route('/get')
    def findScore():
      id_param= str(request.args.get('id'))
      ret = dict()
      cursor = db.scores.find({"id": { "$gt": id_param }}).sort("id",1).limit(20) #ascending
      for document in cursor:
        print(document)
        ret = document
      return jsonify(json_utils.dumps(ret))
    
    app.run()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-04
      • 2019-12-30
      • 1970-01-01
      • 2018-01-19
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多