2017-04-27 12 views
3

destroy操作で複数のレコードを削除できるストアがあります。ストア同期:多くの削除、一部のエラーが発生しました

これらのレコードのうちのいくつかはデータベースにロックされています(他の誰かがそれに取り組んでいるため)、したがって削除できません。 Id a、b、cを持つレコードの削除は成功したがId x、y、zのレコードは削除できないので、サーバーは再びストアに戻ってグリッドに表示する必要があることをサーバーがフロントエンドに伝えることはできますか?

ExtJSストアは、sync()の後に、レコードが実際にサーバー側で削除されたものであって、それがないものを知っている必要があります。

+0

ストアAjaxは駆動されていますか? ajaxリクエストが呼び出されて自分自身を更新するたびに意味する?機能(記録、操作、成功){} 、 成功::機能(バッチ、オプション){} あなたがのparams '' 'store.sync({ コールバックに失敗コールバックを渡すことができます同期で – Tejas

+0

@Alexander 、 失敗:関数(バッチ、オプション){ } }); '' 'わからないが、多分何かがある。 – pagep

答えて

0

私はこの問題に直接的な解決策はないと思います。私は、次の回避策を選択している:

レコードはデフォルトでfalseに設定されている「IsDeleted」フラグを持っている:

fields:[{ 
    ... 
},{ 
    name: 'IsDeleted' 
    type: 'bool', 
    defaultValue: false 

ストアはフラグがに設定されているエントリを隠すフィルターを持っていますtrue

filters:[{ 
    property:'IsDeleted', 
    value:false 
}] 

ユーザーが削除することを選択した場合、私は店からremoveエントリは、代わりに私はこれらのエントリにtrueIsDeletedフラグを設定しないでください。このフィルタは、エントリが削除されたとユーザに考える。

ストアが同期するときは、destroy操作ではなく、update操作を実行します。したがって、APIの更新エンドポイントはIsDeletedが送信されるすべてのエントリをtrueとして削除する必要があります。データベースからエントリを削除できない場合、クライアントに返される対応するjsonはIsDeletedfalseに設定されているため、フロントエンドはそのエントリの削除が失敗したことを知るようになります。

関連する問題