【问题标题】:hasMany relationship with JSON linkshasMany 与 JSON 链接的关系
【发布时间】:2016-06-13 04:06:44
【问题描述】:

我正在尝试在我的 ember 应用中构建动态 REST 调用。我试图将此解决方案用作起点,但它不起作用,我不确定是否是因为 Ember 现在使用 JSON API 并且我的结构错误: Dynamic segment in ember data adapter

在后端,调用看起来像 /posts/{postID}/comments,我希望能够从 ID 1、2、3 等的帖子中动态获取 cmets...

这是我的基本结构
帖子模型:

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"
    }
  }]

我的目标是调用 cmets 以使用上面的模板构造一个看起来像 /posts/1/comments 的命名空间。我正在取回 post 模型并已验证第一个 {{#each}} 循环有效,但对 post.comments 的调用在模板中没有任何作用。

【问题讨论】:

标签: ember.js ember-cli json-api


【解决方案1】:

您的有效负载未确认JSON API。因为commentspost 的关系,所以payload 应该是这样的:

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

阅读here 了解有关 JSON API 关系的更多信息。


注意您的有效载荷的构建方式确实适用于旧的RESTSerializer

【讨论】:

    【解决方案2】:

    这是假设您有权更改有效负载响应。如果没有,您将不得不使用序列化程序来处理数据。

    首先,从您在此处显示的内容来看,您似乎没有将任何 cmets 加载到模型中。

    您的有效负载应该如下所示:

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

    【讨论】:

    • 这行得通,但不能完成我想做的事情。访问这些数据最终会为数据数组中的每个评论 ID 调用后端。我正在寻找一个电话来获得我所有的 cmets。而不是/post/1/comments/1 我想要/post/1/comments,据我了解,它应该使用链接属性来工作
    猜你喜欢
    • 2014-12-30
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多