在 Eve 的 pre-put 回调中从数据库获取项目信息
Get info of an item from database in pre-put callback in Eve
我有带 subId
的项目和存储在 mongoDB 中的一些其他字段。在提交PUT
请求之前,我想检查PUT
请求的header中发送的subId
是否等于subId
存储在 mongoDB 中的所需项目。所以,我决定使用 pre_put_callback
来做这个检查。现在我可以在这个函数中从请求的 header 中获取 subId
,但我不知道如何从 mongoDB 中访问项目的 subId
,其 _id
由用户提供,作为 pre_put_callback
函数中请求的路径。有没有办法从 pre_put_callback
函数访问该项目的 subId
(存储在 MongoDB 中)?
您可以使用 flask
包的 current_app
从预请求事件挂钩(例如 pre_put_callback
访问 MongoDB 数据库的项目。例如,对于 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()
我有带 subId
的项目和存储在 mongoDB 中的一些其他字段。在提交PUT
请求之前,我想检查PUT
请求的header中发送的subId
是否等于subId
存储在 mongoDB 中的所需项目。所以,我决定使用 pre_put_callback
来做这个检查。现在我可以在这个函数中从请求的 header 中获取 subId
,但我不知道如何从 mongoDB 中访问项目的 subId
,其 _id
由用户提供,作为 pre_put_callback
函数中请求的路径。有没有办法从 pre_put_callback
函数访问该项目的 subId
(存储在 MongoDB 中)?
您可以使用 flask
包的 current_app
从预请求事件挂钩(例如 pre_put_callback
访问 MongoDB 数据库的项目。例如,对于 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()