2014-12-01 2 views
0

Я пытаюсь избавиться от некоторых асинхронных отношений в Ember-Data и вместо этого направить их, но в некоторых проблемах.Загрузка на боковой поверхности с данными Ember

Мой 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_mailingAddressCountry, Currencies_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? –

+0

Да, это было. Выяснил это после публикации. Я возвращался назад, чтобы обновить эту проблему при правильном форматировании. Мне пришлось реорганизовать большую часть моего адаптера, чтобы он работал правильно. – ultimatemonty

ответ

1

В конце концов мне пришлось переформатировать мой JSON в следующем формате

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

После того как я это правильно отформатирован и переработан мой адаптер все было подливкой!

Смежные вопросы