我的应用程序后端有几个资源。为每种资源公开模型。
所有其他资源的入口点是User
模型。我的意思是,给定User
,我们可以找到BlogPost
。给定BlogPost
我们可以找到Comments
等。
在Ember术语中,我们可以说:
User hasMany BlogPost
BlogPost hasMany Comment
Comment belongsTo BlogPost
通过后端公开表单的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
我正在尝试弄清楚如何使用Ember数据来提取属于某个Comment
的某个BlogPost
的{{1}}。
从我看到的,如果我为User
定义典型的Ember模型:
Comment
在App.Comment = DS.Model.extend({
...
blogPost: DS.belongsTo('App.BlogPost')
});
我有以下内容:
CommentRoute
请求发送至:
var CommentRoute = MessageRoute.extend({
model: function(params) {
this.store.find('comment')
},
我甚至不知道从哪里开始,以便Ember Data使用以下格式的网址:
/api/v1/comments
我已经看过几个类似的问题(见下面的链接),但没有看到任何一个明确的答案。当ember-data可能没有这样的功能时,它们中的大多数已经差不多一年了(或者在其中一些主题中声称这样)。
我再次要求确认ember-data是否具有此类功能。
类似的问题:
答案 0 :(得分:1)
处理它的最佳方法是使用链接。如果你不想这样做,那就远远不受支持,而且难以入侵(管道只是不容易传递信息)。我个人建议在这种情况下推出自己的适配器(Ember without Ember Data)。
App.Foo = DS.Model.extend({
name: DS.attr('string'),
bars : DS.hasMany('bar', {async:true})
});
App.Bar = DS.Model.extend({
foo: DS.belongsTo('foo'),
});
JSON:
{
id: 1,
name: "bill",
links: {
bars: '/foo/1/bars'
}
}