如何使用嵌套资源的Ember数据

Cod*_*oet 8 ember.js ember-data

我的应用程序后端有几个资源.为每个资源公开模型.

所有其他资源的入口点都是通过User模型.我的意思是,User我们可以找到BlogPost.鉴于BlogPost我们可以找到Comments

在Ember术语中,我们可以说:

User hasMany BlogPost
BlogPost hasMany Comment
Comment belongsTo BlogPost
Run Code Online (Sandbox Code Playgroud)

通过后端公开表单的REST API:

GET /api/v1/users/1
GET /api/v1/users/1/blog_posts/1
GET /api/v1/users/1/blog_posts/1/comments/1
Run Code Online (Sandbox Code Playgroud)

我正在试图弄清楚如何使用Ember Data来获取Comment属于某个特定 BlogPost属性User.

从我看到的,如果我定义一个典型的Ember模型Comment:

App.Comment = DS.Model.extend({
  ...
  blogPost: DS.belongsTo('App.BlogPost')
});
Run Code Online (Sandbox Code Playgroud)

CommentRoute我有以下内容:

var CommentRoute = MessageRoute.extend({
    model: function(params) {
        this.store.find('comment')
    },
Run Code Online (Sandbox Code Playgroud)

请求将发送至:

/api/v1/comments
Run Code Online (Sandbox Code Playgroud)

我甚至不知道从哪里开始,以便Ember Data使用以下形式的网址:

GET /api/v1/users/1/blog_posts/1/comments/1
Run Code Online (Sandbox Code Playgroud)

我已经看到了几个类似的问题(见下面的链接),但没有看到任何一个明确的答案.当ember-data可能没有这样的功能时,它们中的大多数已经差不多一年了(或者在其中一些线程中声称这样).

我再次要求确认ember-data是否具有此类功能.

类似问题:

  1. Ember Data嵌套模型
  2. 规范方式加载嵌套资源
  3. 深层嵌套路线

Kin*_*n2k 1

处理它的最好方法是使用链接。如果您不想这样做,那么它远不受支持,并且很难入侵(管道只是不容易传递信息)。就我个人而言,我建议在这种情况下滚动您自己的适配器(没有 Ember 数据的 Ember)。

App.Foo = DS.Model.extend({
  name: DS.attr('string'),
  bars : DS.hasMany('bar', {async:true})
});

App.Bar = DS.Model.extend({
  foo: DS.belongsTo('foo'),
});
Run Code Online (Sandbox Code Playgroud)

格式:

{
  id: 1,
  name: "bill",
  links: {
    bars: '/foo/1/bars'
  }
}
Run Code Online (Sandbox Code Playgroud)

示例: http: //emberjs.jsbin.com/OxIDiVU/971/edit