2016-02-29 106 views
1

我試圖在我的燼應用程序中構建一個動態REST調用。我試圖使用這個解決方案作爲一個起點,但它不工作,我不知道是否因爲Ember現在使用JSON API並且我構造錯了: Dynamic segment in ember data adapter與JSON鏈接有很多關係

在後端呼叫貌似/posts/{postID}/comments,我希望能夠從ID 1,2,3,等後動態獲取評論...

這裏是我的基本結構
Post模型:

export default DS.Model.extend({ 
    name: DS.attr('string'), 
    comments: DS.hasMany('comment', {async:true}) 
}); 

評論模型:

export default DS.Model.extend({ 
    name: DS.attr('string') 
}); 

模板:

<ul> 
    {{#each model as |post|}} 
    {{#each post.comments as |comment|}} 
     <li>{{comment.name}}</li> 
    {{/each}} 
    {{/each}} 
</ul> 

的Json POST負載:

"data": [{ 
    "type": "posts", 
    "id": "1", 
    "attributes": { 
     "id": 1 
     "name": "my title" 
    }, 
    "links": { 
     "comments": "comments" 
    } 
    }] 

我的目標是使該呼叫的意見,構建一個命名空間,看起來像/posts/1/comments使用上面的模板。我得到後期模型,並驗證了第一個{{#each}}循環的工作原理,但對post.comments的調用在模板中沒有任何作用。

+0

它看起來像你缺少'belongsTo' https://guides.emberjs.com/v2.3.0/models/relationships/#toc_one-to-many –

+0

這並沒有造成差異 – PlainPat

+0

是否有已經有答案了? –

回答

0

這是假設您有權更改有效負載響應。如果沒有,你將不得不使用串行器來處理數據。

首先,從您在此顯示的內容看,您看起來並沒有將任何評論加載到模型中。

你的有效載荷或許應該是這個樣子:

"data": [{ 
    "type": "posts", 
    "id": "1", 
    "attributes": { 
    "id": 1 
    "name": "my title" 
    }, 
    "relationships": { 
    "comments": { 
     "data": [ 
     { 
      "id": "3", 
      "name": "comment" 
     } 
     ] 
    } 
    } 
}] 
+2

這工作,但沒有完成我想要做的事情。訪問這些數據最終將調用數據數組中每個註釋ID的後端。我正在尋找一個電話來獲得我所有的評論。而不是'/ post/1/comments/1'我想要'/ post/1/comments',根據我的理解,應該使用links屬性 – PlainPat

2

您的有效載荷不能確認JSON API。由於commentspost的關係,有效載荷應該是這個樣子:

"data": [{ 
    "type": "posts", 
    "id": "1", 
    "attributes": { 
    "id": 1, 
    "name": "my title" 
    }, 
    "relationships": { 
    "comments": { 
     "links": { 
     "related": "/posts/1/comments" 
     } 
    } 
    } 
}] 

here瞭解有關JSON API關係的更多信息。


N.B.你的有效載荷的構建方式,與舊的RESTSerializer一起工作。