7

だから私は(私が思うに)Ember-dataに関する一般的な問題を抱えています。次の状況に適応するためにアダプターを適切にカスタマイズする方法を考えています。

次の 2 つのオブジェクトがあるPostとします。Tag

を呼び出すと、ingApp.Post.find()によってすべての投稿が返されます。見つかったのはです。これはいい。GETapi.com/postsApp.Post.find(1)api.com/posts/1

App.Tag.find()で利用可能なすべてのタグを返しますapi.com/tagsApp.Tag.find(1)正しい URL で適切なタグを返します。また良い。

App.Post.createRecord({...})それを介して新しい投稿を作成するPOSTと、正しいURLになります。の作成も同様Tagsです。これまでのところ、すべてがダンディです。

Tagson aPostは、その投稿の「上」にあるため埋め込まれています。

App.Adapter.map("App.Post", {
    tags: {embedded: 'always'}
});

読み込み中、Ember-data はすべてを正しく処理し、私は今でも非常に満足しています。

だから私の問題は、 aTagに a を追加することから来ていPostます。サーバーがサーバー側のすべてのことを行う場所にタグオブジェクトを配置したいPUTと思います。POSTapi.com/posts/1/tags

現在、

  1. {embedded: 'always'}設定が設定された Ember-data は、オブジェクト全体(新しいオブジェクトを含む) を JSON 文字列化された文字列として送信PUTします。api.com/posts/1PostTag

  2. {embedded: 'always'}構成が設定されていない場合、ember-data はPUTオブジェクトにタグを付けようとし、パラメーターを含むオブジェクトをapi.com/tags送信して、サーバー側がサーバー側のすべてのことを実行できるようにします。Tagpost_id

サーバーがそのように設定されていないため、1 を実行したくありません。PUT/POST/GETs onapi.com/tagsは実際にはアプリケーションの「タグ管理」部分であり、実際には投稿にタグを適用するものではないため、2 は実行したくありません。この動作の別の例は、Github v3 API for Labels & Issues にあります。

ember-dataでこれを処理する方法を知っている人はいますか? ありがとう!

4

1 に答える 1

1

RESTAdapter#dirtyRecordsForHasManyChange 関数をオーバーライドして、トランザクション中にタグがどのように処理されるかを管理することを検討してください。

しかし、リレーションシップが埋め込まれていないのは少し混乱しますが、Post モデルのリレーションシップの変更中にタグで PUT を実行したくありません。すぐに使用できるアダプターの動作に問題があるかどうかはわかりません。

于 2013-03-04T16:40:26.997 に答える