投稿 (および関連するメタデータ) を編集している画面にいるとしましょう。現在、投稿には多くのカテゴリ、タグ、およびその他の関連アイテム (hasMany) が含まれています。
投稿全体を保存するときは、投稿とそれに関連付けられているすべてのエンティティを保存する必要があります。これは、AngularJS で行う方法です。
すべてのデータは別のモデルに保存されるため、どこからでもアクセスできます。関連する各エンティティには、それらが新しいかダーティか、またはサーバー側の検証エラーがあるかどうかを示す複数のメタデータがあります。
「SaveCtrl」と呼ばれる別のコントローラーが保存を管理します。投稿のすべてのエンティティを調べて、変更されたエンティティを特定し、それらを投稿と共に単一の保存エンドポイントに送信するだけです。
サーバーからの応答を解析するファクトリがあります。サーバー側の検証エラーが原因で、要素が保存されない場合があります。とにかく、応答を取得したら、これらの各エンティティを新しい状態と検証エラーで更新する必要があります。これにより、サーバー側はエラーなしでエンティティを更新できますが、検証エラーがあった少数のエンティティに対してエラーを返すことができます。
さて、このアプローチにはいくつかの問題があります。
保存は完全に RESTful ではありません。データを取得している間、おそらく各リソースに対して複数の GET 呼び出しを行う必要があると思います ( API の URL 設計)。ただし、保存するための同様のアプローチは知りません。一度にコレクションまたは単一のエンティティを保存する必要がありますか?
各エンティティのメタデータ (新規、ダーティ、保存済み、未保存のいずれであるかを指定) は、モデル データ自体に配置する必要があります。ng-repeat は別のスコープを作成するため、このような状態情報をこれらの別のスコープに保存し、これを処理するコントローラーに ng-repeat 要素をラップするのが理想的です。
私の質問
関連するすべてのエンティティを含む投稿全体を保存するには、どの戦略を使用すればよいですか? それとも、現在の戦略で十分でしょうか? 追加の詳細が必要な場合はお知らせください。