Ember-Data:RESTAdapter:可以在sideloaded对象中侧载对象列表吗?

时间:2013-08-14 21:54:19

标签: rest ember.js ember-data

你好我正在使用emberjs和ember-data,我是javascript的新手。

我在ember网站上关注本指南: http://emberjs.com/guides/models/the-rest-adapter/

我想知道如果能够使用ember-data rest适配器在sideloaded对象中加载对象列表,我将从后端接收以下输出:

  {
    "search_flight" : { "flight_ids" : [
      166,
      4792
    ] },
  "flights" : [ 
      {
    "id" : 166,
    "arrival_airport" : "CUL",
    "date" : "Aug 14, 2013 12:00:00 AM",
    "departure_airport" : "MEX",
    "flight_detail_ids" : [ 166 ],
    "flight_details" : [ { 
          "id" : 166,
          "airline" : "Aeromexico",
          "arrival_airport" : "CUL",
          "arrival_time" : "16:48:00.000",
          "departure_airport" : "MEX",
          "departure_time" : "15:43:00.000",
          "flight_number" : "166",
          "travel_time" : 125
        } ],
    "flight_type" : 1,
    "travel_time" : 125
  },
  {
     //other flight...
  }]
 }

这是我的ember-data config:

App.Flight = DS.Model.extend({
    date: DS.attr('string'),
    departureAirport: DS.attr('string'),
    arrivalAirport: DS.attr('string'),
    travelTime: DS.attr('number'),
    flightType: DS.attr('number'),
    flightDetail: DS.hasMany('App.FlightDetail')
});

DS.RESTAdapter.configure('App.FlightDetail', {
   sideloadsAs: 'flight_details'
});

我不知道我是否清楚。

gist url:https://gist.github.com/jmsalcido/f46730922864e2456a5b

1 个答案:

答案 0 :(得分:2)

是的,这是可能的,但它不称为sideloading - ember支持这种技术,但将其称为嵌入式。所以替换DS.RESTAdapter.configure {(.... sideLoadAs...尝试:

DS.RESTAdapter.map('App.Flight', {
  flightDetails: { embedded: 'always' }
};

此外,由于这是一个hasMany关系,我建议您更改模型定义以使用复数flightDetails: DS.hasMany('App.FlightDetail')而不是单数。

有关嵌入式hasMany关系的另一个示例,请参阅此SO帖子:

How to make embedded hasMany relationships work with ember data