我从API获得的json看起来像这样:
[
{
"id": "1",
"title": "title1"
},
{
"id": "2",
"title": "title2"
},
]
很遗憾,我无法更改API,因此如何让它与RESTAdapter一起使用?
我尝试使用此post:
中的代码App.ApplicationSerializer = DS.RESTSerializer.extend({
normalizePayload: function(type, payload) {
return { posts: payload };
}
});
但我收到错误"加载路线时出错:错误:没有找到' post' "
我不明白。
这是我的帖子路线。
App.PostsRoute = Ember.Route.extend({
model: function() {
return this.store.find('posts');
}
});
答案 0 :(得分:1)
你在这里有很多类型。
首先,由于您正在处理帖子,因此最好使用PostSerializer
。
App.PostSerializer = DS.RESTSerializer.extend({
normalizePayload: function(type, payload) {
return { posts: payload };
}
});
当您从服务器请求模型时,您希望使用模型名称,因此您将使用post
(而不是帖子)。
App.PostsRoute = Ember.Route.extend({
model: function() {
return this.store.find('post');
}
});
答案 1 :(得分:0)
normalizePayload
和normalize
都不适合我。我在做的是:
// app/serializers/application.js
import DS from 'ember-data';
export default DS.RESTSerializer.extend({
extractArray: function(store, type, payload) {
var payloadTemp = {}
payloadTemp[type.typeKey] = payload;
return this._super(store, type, payloadTemp);
},
extractSingle: function(store, type, payload, id) {
var payloadTemp = {}
payloadTemp[type.typeKey] = [payload];
return this._super(store, type, payloadTemp, id);
}
});