10

我有一个顶级会话对象,它下面可以有许多发言者。

我的 REST ish 端点允许我像这样获取所有会话

/会话/

我可以像这样让给定会话的所有演讲者

/会话/1/演讲者/

使用当前版本的 ember-data,我可以看到它正在尝试使用此 url 查找所有发言者

/演讲者/

使用下面的数据模型

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})
});

我添加了“nested:true”部分,因为我希望 ember-data 构建所需的

/sessions/%@/演讲者/

但这并没有发生——

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

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

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

ember-data 是否支持开箱即用的类似功能,还是我会被迫自己编写大量代码?

4

1 回答 1

7

{nested: true}还不是一个功能。拉取请求仍处于打开状态。

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

此外,如果您的服务器是 Rails(也许这适用于其他框架),则可以通过将父 ID 作为查询字符串参数传递来保持请求 URL 单级:

/speakers?session_id=1
于 2012-10-07T01:30:48.873 回答