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