2012-10-06 48 views
10

我有一个顶级会话对象,它下面可能有许多扬声器。呃数据是否真的支持嵌套的网址?

我的REST上下的端点可以让我所有的会议,像这样

/会话/

我可以得到一个给定的会话中的所有扬声器,像这样

/会话/ 1 /音箱/

与Ember数据的当前版本,我可以看到它试图找到所有的扬声器,这个网址

/扬声器/

使用下面

CodeCamp.Session = DS.Model.extend({ 
    id: DS.attr('number'), 
    name: DS.attr('string'), 
    speakers: DS.hasMany('CodeCamp.Speaker',{nested: true})               
}); 

CodeCamp.Speaker = DS.Model.extend({ 
    id: DS.attr('number'), 
    name: DS.attr('string'), 
    session: DS.belongsTo('CodeCamp.Session',{nested: true}) 
}); 

数据模型我添加了 “嵌套:真” 的一部分,因为我想烬数据来构建所需的

/会话/%@ /扬声器/

但是这并没有发生 -

我知道我可以定义一个URL手动

CodeCamp.Speaker.reopenClass({ 
    url: 'sessions/%@/speakers/' 
}); 

但是在这样做时,我需要在基本REST适配器中滚动我自己的“buildURL”方法,以便它查找这样的格式并在必要时添加父ID(并且如果可能,我宁愿不这样做)

呃数据是否支持这种开箱即用的方式,或者我会被迫自己写大量的代码?

回答

7

{nested: true}还不是功能。 The pull request is still open.

覆盖&使用适配器的findQuery()通过这样的URL发出GET请求。

另外,如果你的服务器的Rails(也许这适用于其他框架),可以保持请求URL单级,通过将母ID作为查询字符串PARAM:

/speakers?session_id=1 
+0

感谢 - 我现在可以使用它作为解决方法(希望在最终的ember.js 1.0版本或稍后的版本中看到此内容) –