2017-04-07 23 views
2

Nicola's SO answer hereから私自身のテストでは、Eveがリソースエンドポイントで条件付き削除をサポートしていないことは明らかです。Python Eve条件付き/一括削除

私は私が削除したい文書の_ids_etagsGET: "where={...}"要求を使用して、適切に各項目のに設定If-Matchヘッダーでそれらを削除するには、各項目のエンドポイントでの一連のリクエストを送ることができ知っています_etag

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

...しかし、私は、可能な場合は、複数のHTTPリクエストを送信することを回避したいと思います。

1つの解決策は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 
関連する問題