2014-12-01 31 views
0

我正试图摆脱Ember-Data中的一些异步关系,并将它们加载,但却遇到了一些问题。使用Ember Dataloading加载

我的API发回相关数据,但记录是返回的每个对象上的属性,而不是根上的单独数组/对象。我正在使用extractArray来挖掘数据,所以ED喜欢它,但不能完全正确。下面是从API返回的数据样本:

{ 
    "record": [ 
    { 
     "id": 2, 
     "name": "3M Aerospace", 
     "currency": 6, 
     "paymentTerms": 3, 
     "Currencies_by_currency": { 
     "id": 6, 
     "currency": "USD", 
     "description": "US Dollar", 
     "sortOrder": 1 
     }, 
     "PaymentTerms_by_paymentTerms": { 
     "id": 3, 
     "term": "NET10", 
     "description": "Due with 10 days of invoice date" 
     "sortOrder": 3 
     } 
    }, 
    { 
     "id": 3, 
     "name": "BAE Aerospace", 
     "currency": 6, 
     "paymentTerms": 3, 
     "Currencies_by_currency": { 
     "id": 6, 
     "currency": "USD", 
     "description": "US Dollar" 
     "sortOrder": 1 
     }, 
     "PaymentTerms_by_paymentTerms": { 
     "id": 3, 
     "term": "NET10", 
     "description": "Due with 10 days of invoice date" 
     "sortOrder": 3 
     } 
    } 
    ] 
} 

我知道我需要Countries_by_mailingAddressCountryCurrencies_by_currency,并且PaymentTerms_by_paymentTerms出来的对象根。他们到底应该去哪里?我认为它应该是:

{ 
    "record": [ 
     { 
      "id": 2, 
      // other data... 
      "currency": 6, 
      "paymentTerms": 3, 
      // more data... 
     }, { 
      "id": 3, 
      // other data... 
      "currency": 6, 
      "paymentTerms": 3, 
      // more data... 
     } 
    ], 
    "currencies": [ 
     { 
      "id": 6, 
      "currency": "USD", 
      "description": "US Dollar", 
      "sortOrder": 1 
     } 
    ], 
    "paymentTerms": [ 
     { 
      "id": 3, 
      "term": "NET10", 
      "description": "Due with 10 days of invoice date", 
      "isActive": true, 
      "sortOrder": 3 
     } 
    ] 
} 

但ED抱怨说它无法找到相关数据。该模型被定义为

App.Vendor = DS.Model.extend(App.Addressable, { 
    name: DS.attr('string'), 
    currency: DS.belongsTo('currency'), 
    paymentTerms: Ds.belongsTo('payment-term') 
}); 

App.Currency = DS.Model.extend({ 
    currency: string, 
    description: string, 
    sortOrder: number, 
}); 

App.PaymentTerm = DS.Model.extend({ 
    term: string, 
    description: string, 
    sortOrder: number, 
}); 
+0

在您的JSON输出中是''record''应该是'“vendors”'? – 2014-12-01 19:31:12

+0

是的,就是这样。在发布后找出它。我正在盘旋,以适当的格式更新此问题。我不得不重构我的适配器的大部分,以使sideloading正常工作。 – ultimatemonty 2014-12-01 19:37:47

回答

1

到底我有我的JSON格式化以下格式

{ 
    "vendors": [ 
     // vendor objects 
    ], 
    "currencies": [ 
     // currency objects 
    ], 
    "paymentTerms": [ 
     // paymentTerms objects 
    ] 
} 

一旦我有这个正确格式化和重构我的适配器一切都肉汁!