我有点疯狂,试图找出在应用程序中实现嵌套资源的最佳方法我用Ember / Ember Data作为前端。
首先,这是我的模特:
App.Gathering = DS.Model.extend({
name: DS.attr('string'),
events: DS.hasMany('event', { asynch: true })
});
App.Event = DS.Model.extend({
name: DS.attr('string'),
startDate: DS.attr('string'),
endDate: DS.attr('string'),
gathering: DS.belongsTo('gathering', { asynch: true })
});
除了非常基本的路线之外,我到目前为止所有这些 - 当我开始使用后端时,我的问题就出现了。我正在写前端和后端,所以在这个阶段,我真的可以实现后端,但最好。我觉得我已经在互联网上搜索,试图找到一种可靠的,最新的方法来获取与使用Ember数据收集相关的事件对象。我已经没有问题获取收集或事件的所有数据,但有一点时间弄清楚如何 - 给定一个特定的收集(id) - 只查询与该收集相关的事件而不必从服务器加载每个事件。特别是,稍后在路上会有嵌套在事件中的对象,所以我的目标是解决这个问题的可行的长期(ish)期限。
我尝试过使用&#34;链接&#34;从服务器返回的JSON属性,查找了10个关于查询参数的不同站点,并且过去三天几乎花了很多时间试图解决这个问题。我可以使用自定义AJAX查询,但由于这个项目很年轻,我想以尽可能友好的方式实现它,因为我并没有真正受到很多限制。< / p>
我对Ember / Ember Data(以及一般的前端开发)都很陌生,但我已经用Java编写了几年的代码,并且在OOP / MVC / IOC中拥有相当坚实的基础等等。
提前致谢!
我认为我最缺乏的是如何实际访问这些嵌套资源的知识;张贴回答的例子清楚地说明了我的出色表现。找到RESTAdapter / Ember-Data的完整工作示例一直是一个小小的噩梦,所以非常感谢!
答案 0 :(得分:1)
为了完整起见,Ember在没有Ember Data的情况下工作正常。如果您不想使用Ember数据,可以将POJO与Ember一起使用。
此外,您需要使用async
代替asynch
。
对于使用links
的异步记录,这是处理关系的完全合适的方法。
App.Gathering = DS.Model.extend({
name: DS.attr('string'),
events: DS.hasMany('event', { async: true })
});
App.Event = DS.Model.extend({
name: DS.attr('string'),
startDate: DS.attr('string'),
endDate: DS.attr('string'),
gathering: DS.belongsTo('gathering', { async: true })
});
现在这完全是意见,但如果我要查询使用身份1
进行搜集,我可能会这样做。
this.store.find('gathering', 1);
{
gathering: {
id: 1,
name: 'foo',
links: {
events: '/events?gathering_id=1'
}
}
}