没有root的RESTAdapter和JSON

时间:2014-05-19 22:32:47

标签: json ember.js ember-data

我从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');
  }
});

2 个答案:

答案 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)

normalizePayloadnormalize都不适合我。我在做的是:

// 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);
    }
});