2014-11-14 97 views
1

我的灰燼應用程序使用API​​(通過DS.ActiveModelAdapter適配器)其中GET "/api/v1/users?username=mcclure.rocio"等回答了JSON交互像http://localhost:4200/user/mcclure.rocio這樣的路線是一種用戶的摘要。灰燼ActiveModelAdapter定製

問題是加載在路線的正確型號:

export default Ember.Route.extend(AuthenticatedRouteMixin, { 
    model: function(params) { 
    return this.store.find('user', { username: params.username }) 
    } 
}); 

我的灰燼檢查員指出,所加載的模型是一個空DS.AdapterPopulatedRecordArray。這是因爲findQuery(實際上稱爲我提供查詢對象)期望獲取JSON數組,而我的API返回一個單一的用戶 JSON對象,因此它將其轉換爲空數組。

然而this.store.find('user', { username: params.username })爲我的API構建了正確的請求,但是如何讓Store接受API響應並將其作爲模型傳遞給我的路由?

注: 如果我的API返回一個數組可以做這樣的事情:

export default Ember.Route.extend(AuthenticatedRouteMixin, { 
    model: function(params) { 
    return this.store.find('user', { username: params.username }).then(function(data){ 
     return data.objectAtContent(0); 
    }); 
    } 
}); 

,但是,我不想對其進行修改。

回答

1

您應該使用DS.RestSerializer上的normalizePayload函數來修改對Ember Data期望的格式的響應。

+0

謝謝!使normalizePayload返回一個數組('return {users:[payload.user]}')讓我使用我的筆記中報告的策略。 – masciugo 2014-11-18 11:24:28