2017-04-07 74 views
2

從我自己的測試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的功能提供條件和/或批量刪除的推薦方式是什麼?

回答

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