[英]How do I handle nested data with Ember Data with any backend?
试图找出在以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 })
});
除了非常基本的路线外,到目前为止,这还只是我的全部-当我开始使用后端时,就会遇到我的问题。 我正在编写前端和后端,因此在此阶段,我可以实现后端,但最好。 我觉得我已经搜寻了Internet,试图找到一种可靠的,最新的方式来获取与使用Ember Data进行收集相关联的Event对象。 我没有为聚会或事件获取所有数据的问题,但是花了一点时间来弄清楚如何-给定特定的聚会(id)-仅查询与该聚会有关的事件,而不必加载每个事件来自服务器的事件。 特别是,在稍后的过程中,将在“事件”内部嵌套一些对象,因此我的目标是为该问题寻求可行的长期解决方案。
我尝试使用服务器返回的JSON上的“链接”属性,查找了10个有关查询参数的不同站点,并且过去三天中,几乎已经花了很多时间来解决这个问题。 我可以使用自定义AJAX查询,但是由于这个项目还很年轻,所以我希望以对Ember友好的方式实现它,因为我并没有受到太多限制。
我刚接触Ember / Ember Data(通常是前端开发),但是我从事Java编程已经有几年了,并且在OOP / MVC / IOC等方面拥有扎实的基础。
提前致谢!
我认为我最缺乏的是如何实际访问这些嵌套资源的知识。 发布的答案中的示例清楚地说明了这一点。 寻找一个完整的,有效的RESTAdapter / Ember-Data示例一直是一个噩梦,对此深表感谢!
仅出于完整性考虑,如果没有Ember Data,Ember可以正常工作。 如果您不想使用Ember Data,可以将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 })
});
这是完全意见,但是如果我要查询id为1
收集,我可能会这样做。
this.store.find('gathering', 1);
{
gathering: {
id: 1,
name: 'foo',
links: {
events: '/events?gathering_id=1'
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.