繁体   English   中英

如何使用任何后端的Ember Data处理嵌套数据?

[英]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);

JSON回应

{
  gathering: {
    id: 1,
    name: 'foo',
    links: {
      events: '/events?gathering_id=1'
    }
  }
}

当您访问事件关系时,它将调用“ / events?gathering_id = 1”

示例: http//emberjs.jsbin.com/OxIDiVU/906/edit

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM