我试图在我的ember应用中构建动态REST调用。我试图使用此解决方案作为起点,但它不起作用,我不确定它是否是因为Ember现在正在使用JSON API并且我构造错误: Dynamic segment in ember data adapter
在后端,通话看起来像/posts/{postID}/comments
,我希望能够动态地从ID 1,2,3等的帖子中获取评论。
这是我的基本结构
发布模型:
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 Payload:
"data": [{
"type": "posts",
"id": "1",
"attributes": {
"id": 1
"name": "my title"
},
"links": {
"comments": "comments"
}
}]
我的目标是调用注释,使用上面的模板构建一个类似于/posts/1/comments
的命名空间。我收回了帖子模型,并确认第一个{{#each}}
循环有效,但对post.comments
的调用在模板中没有任何作用。
答案 0 :(得分:2)
您的有效负载未确认JSON API。由于comments
是post
的关系,因此有效负载应如下所示:
"data": [{
"type": "posts",
"id": "1",
"attributes": {
"id": 1,
"name": "my title"
},
"relationships": {
"comments": {
"links": {
"related": "/posts/1/comments"
}
}
}
}]
阅读here以获取有关JSON API关系的更多信息。
N.B。构建有效负载的方式适用于旧的RESTSerializer。
答案 1 :(得分:0)
这假设您有权更改有效负载响应。如果没有,您将不得不使用序列化程序来按摩数据。
首先,根据您在此处显示的内容,您似乎没有将任何评论加载到模型中。
您的有效负载应该看起来像这样:
"data": [{
"type": "posts",
"id": "1",
"attributes": {
"id": 1
"name": "my title"
},
"relationships": {
"comments": {
"data": [
{
"id": "3",
"name": "comment"
}
]
}
}
}]