首页 > 解决方案 > 在 Eve 的 pre-put 回调中从数据库中获取项目的信息

问题描述

我有项目subId和一些其他字段存储在 mongoDB 中。在PUT提交请求之前,我想检查请求subId标头中发送的PUT内容是否等于subId存储在 mongoDB 中的所需项目的内容。所以,我决定用pre_put_callback做这个检查。现在我可以subId在此函数中获取请求的 from 标头,但我不知道如何subId从用户提供的 mongoDB 中访问该项目作为函数_id中请求的路径。pre_put_callback有没有办法subId从函数中访问该项目(存储在 MongoDB 中)pre_put_callback

标签: pythonmongodbputeve

解决方案


您可以从预请求事件挂钩(例如pre_put_callback使用包)访问 MongoDB 数据库中的current_app一项。flask例如,对于 pre_PUT 事件挂钩,可以按如下方式访问它:

from flask import current_app as app
from eve import Eve

def pre_put_callback(resource, request, lookup):
    resource_db = app.data.driver.db[resource]
    item = resource_db.find_one(lookup)
    print("DB Item: ", item)

app = Eve()
app.on_pre_PUT += pre_put_callback

app.run()

推荐阅读