2013-10-15 34 views
0

我的API大部分是安穩的,除了我在某些資源上有一個/search端點。我正在使用DS.ActiveModelAdapterDS.ActiveModelSerializer,一切都很好。如何使用Ember Data 1.0 beta命中非REST端點

我當前實現搜索是有點像這樣:

makeAPICall: -> 
    @set('loading', true) 

    states = @get('selectedStates') 
    statesString = states.join(',') 
    query = @get('searchParam') 
    url = "/api/v1/organizations/search?#{statesString}&query=#{query}" 

    $.get(url).then (data) => 
    @get('store').pushPayload(data) 
    # TODO this needs to go through the adapter. 
    orgs = data.organizations.map (org) => 
     @store.find('organization', org.id) 
    @set('organizations', orgs) 
    @set('loading', false) 

的問題是,我不知道該怎麼做所有的正常化/駱駝化出現這種情況,在這種情況下,適配器。因爲在這種情況下模板依賴於@get('organizations'),所以某些下劃線屬性不顯示。

什麼是正確的方式來實現呢?

回答

0

的pushPayload被suposed做歸一化/駱駝化,但需要知道你是推,從文檔類型...但在V1.0.0-beta.3版本

var pushData = { 
    posts: [ 
    {id: 1, post_title: "Great post", comment_ids: [2]} 
    ], 
    comments: [ 
    {id: 2, comment_body: "Insightful comment"} 
    ] 
} 

store.pushPayload('post', pushData); 

在你的情況應該聯繫

@get('store').pushPayload('organization', data) 

而且數據JSON的組織

organizations:[ 
    {id:1,...}, 
    {id:2,...}, 
    {id:3,...} 
] 
+0

然後我將如何'@set數組(」組織)'?我更新了問題以顯示我現在正在做什麼 – mehulkar

+0

然後,您擁有商店中的組織,您可以在您的路線中找到它們,例如model hook @get('store')。find('organization',org.id ),但沒有看到你的路線定義... – Edu

+0

在這種情況下,我不知道它是如何發生在路線中,但我現在正在控制器中完成。我不喜歡解決方案,但它的工作原理。 – mehulkar

相關問題