Python Eve有条件/批量删除
问题描述:
从我自己的测试Nicola's SO answer here看来,Eve在资源端点不支持条件删除。Python Eve有条件/批量删除
我知道我可以使用一个GET: "where={...}"
请求_ids
和文档_etags
我想删除,然后在每一个项目的端点发送一系列请求与If-Match
头适当地设置每个项目的删除它们_etag
:
for each item:
DELETE: http://localhost:5000/items/<item._id>
......但我想避免发出多个HTTP请求,如果可能的话。
一个解决方案可能是predefined database filters,但这些将是静态过滤器,我希望根据某些URL参数动态过滤删除。 Pre-event hooks可能是我正在寻求的解决方案。
Eve是否支持批量删除?如果没有,推荐Eve的功能提供条件和/或批量删除的推荐方式是什么?
答
我添加了一个事件前钩DELETE,这似乎与我到目前为止已经运行测试来工作:
def add_delete_filters(resource, request, lookup):
if 'where' in request.args:
conditions = request.args.getlist('where')
for cond_str in conditions:
cond = json.loads(cond_str)
for attrib in cond:
lookup[attrib] = cond[attrib]
app = Eve()
app.on_pre_DELETE += add_delete_filters