2016-10-13 6 views
0

私はJSON API仕様に従ったバックエンドを持っています。私のエンバーアプリでフィルタを使用せずにリソースの関係を要求するにはどうすればよいですか?

、私はこのような何か:

model() { 
    return this.store.query('category', { filter: { forum: 'main' } }); 
} 

これはうまく機能してサーバーに送信された要求がGET /categories?filter[forum]=mainです。私のアプリはID mainのフォーラムからすべてのカテゴリを取得します。

これまでのリクエストの代わりに、モデルからGET /forums/main/categoriesを作りたいと思います。 Ember DataでEmberでこれをどのように行うことができますか?

は、ここで私はエンバーAJAXと試みた何か:

ajax: Ember.inject.service(), 

model() { 
    return Ember.RSVP.hash({ 
    categories: this.get('ajax').request('/forums/main/categories'), 
    }); 
} 

要求作品や正しいデータがサーバーから返されます。しかし、Ember Dataはそれについて知らず、テンプレートでモデルを使用することはできません。 Ember AJAXをEmber Dataで使用するにはどうすればよいですか?

import DS from 'ember-data'; 
import AjaxServiceSupport from 'ember-ajax/mixins/ajax-support'; 

export default DS.JSONAPIAdapter.extend(AjaxServiceSupport); 

https://github.com/ember-cli/ember-ajax#usage-with-ember-data

しかし、何も変更していないようだ。

エンバーAJAX GitHubのページには、そのような何かを書くことを提案しています。

+0

あなたはモデル固有のアダプタを作成し、 'フォーラム/ main' – kumkanillam

+1

' main'がIDであるに 'namespace'のプロパティを設定することができます。それは動作しません。 –

答えて

1

いいえ、/forums/main/categoriesは関係リンクのように見えます。同様にforumのようなモデルであり、関係カテゴリがあります。これは正しいですか?

もしそうなら、おそらく最も良い方法はforumを取得してから関係を取得することです。あなたはすでにforumレコードを持っていますか?したがって、このような何か:あなたはフォーラムの文字列に基づいてcategoriesをフィルタリングする場合は

store.findRecord('forum', 'main').then(forum => forum.get('categories')); 

しかし、これもまた可能です。

this.store.query('category', { filter: { forum: 'main' } }); 

をしかし、それは/forums/main/categories代わりの/categories?filter[forum]=main要求する必要があります。だから、基本的に、あなたはこれをやりたいです。これはカスタムアダプターで行うことができます。おそらく、あなただけのurlForQueryを上書きする必要があります。

urlForQuery(query, modelName) { 
    if(query.filter.forum) 
    const forum = query.filter.forum; 
    delete query.filter.forum; 
    return `/forums/${forum}/categories` 
    } else { 
    return this._super(...arguments); 
    } 
}, 
+0

私は 'store.findRecord( 'forum'、 'main')のようなものを探しています(forum => forum.get( 'categories'));'。私はそれを試しましたが、残念ながらそれは動作しません。 'GET/forums/main'を作るだけです。 –

+0

'/ forums/main'は正しいJSONAPIレスポンスで応答し、関係上の' links'オブジェクトは応答しますか? – Lux

+0

はい。テンプレートで 'forum.categories'を使用しようとすると自動的に' GET/forum/main/categories'が作成されますが、便利ではありません。フィルタを適用したり、データを並べ替えたりすることはできません。そのため、私がそれ以上のコントロールを持つルートでリクエストが発生したいのです。 –

関連する問題