Python Eve有条件/批量删除

时间:2017-04-07 02:41:46

标签: python eve

Nicola's SO answer here和我自己的测试看来,Eve似乎不支持资源端点的条件删除。

我知道我可以对我要删除的文档的GET: "where={...}"_ids使用_etags请求,然后在每个项目端点发送一系列请求使用If-Match标题删除它们,并为每个项目_etag {<1}}进行适当设置:

for each item:
    DELETE: http://localhost:5000/items/<item._id>

...但我希望尽可能避免发送多个HTTP请求。

一个解决方案可能是predefined database filters,但这些是静态过滤器,我希望根据某些网址参数动态过滤删除。 Pre-event hooks可能是我寻求的解决方案。

Eve是否支持批量删除?如果没有,推荐使用Eve的功能来提供条件和/或批量删除的方法是什么?

1 个答案:

答案 0 :(得分:0)

我为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