python - 在 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
?
解决方案
您可以从预请求事件挂钩(例如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()
推荐阅读
- logging - 带有 DECLARE 格式参数的 EF Core SQL 日志记录
- ruby-on-rails - 如何跟踪已被杀死的 sidekiq 作业?
- jquery - 如何在 div 和 UL 上给出 tabindex?
- javascript - 如何为 0.01 - 8.50 之间的数字范围生成正则表达式
- javascript - 在 vuex + Firebase 应用程序中使用重定向方法获取登录结果
- javascript - 如何修复我的 EJS 引用错误:未定义朋友(变量)?
- c# - 我在gridview 中有3 个文本框。当值输入到第一个和第二个文本框时,我想自动将结果写入第三个文本框
- spring-mvc - Dispatcher servlet 阻止上传的附件
- javascript - 使用 jQuery 触发 CSS 摇动动画,每隔一段时间都有效……为什么?
- android - 无法在我的 Android 应用程序中获取我的库的传递依赖项