我有一个顶级会话对象,其下可以有很多发言人。
我的REST ish端点允许我像这样获得所有会话
/会话/
我可以像这样获得给定会话的所有发言者
/会话/ 1 /扬声器/
使用当前版本的ember-data,我可以看到它正在尝试使用此网址查找所有发言人
/扬声器/
使用下面的数据模型
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 /%@ / speakers /
但这并没有发生 -
我知道我可以手动定义网址
CodeCamp.Speaker.reopenClass({
url: 'sessions/%@/speakers/'
});
但是这样做我需要在基础REST适配器中滚动我自己的“buildURL”方法,以便它查找这样的格式并在必要时添加父ID(如果可能,我宁愿不这样做)
ember-data是否支持开箱即用的这类内容,或者我自己会被迫编写大量代码?
答案 0 :(得分:7)
{nested: true}
还不是一个功能。 The pull request is still open.
覆盖&使用适配器的findQuery()
使用这样的URL发出GET请求。
此外,如果您的服务器是Rails(并且可能适用于其他框架),则可以通过将父ID作为查询字符串参数传递来保持请求URL的单级:
/speakers?session_id=1