从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的功能来提供条件和/或批量删除的方法是什么?
答案 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