我有一個Ember/EmberData(版本2.1.0)應用程序,它將在主頁上顯示posts
(從json載荷創建)列表,路線extractSelect/extractArray在seralizers/application.js沒有被調用
this.route("posts", { path: "/" });
然而,從服務器中檢索的posts
不是由EmberData即期望的格式,他們沒有一個頂級的命名空間。因此,我創建了一個文件
serializers/application.js
,其中包括一個extractSingle
,並在它的extractArray
功能,但他們都不是獲取調用,並且錯誤信息,因此不goig遠
Error while processing route: posts Assertion Failed: You must include an 'id' for undefined in an object passed to 'push
此錯誤之前有一個警告:
`WARNING: "Encountered "0" [and "1"] in payload, but no model was found for model name "0" (resolved model name using [email protected]:posts.modelNameFRomPayloadKey("0")
我還創建了一個文件
serializers/posts.js
,幷包括有相同的功能,以及(延長ApplicationAdapter),但他們都不是獲取調用也
從/serializers/application.js代碼
import DS from 'ember-data'
export default DS.RESTSerializer.extend({
extractSingle: function(store, type, payload, id){
var convertedPayload = {};
convertedPayload[type.modelName] = payload;
convertedPayload.id = id;
return this._super(store, type, convertedPayload, id}
},
extractArray: function(store, type, payload){
var convertedPayload = {};
convertedPayload[type.modelName = payload;
return this._super(store, type, convertedPayload);
},
serializeIntoHash: function(hash, type, record, options){
//ommitted
}
}