在 Serializer 中自定义 JSON 集合名称

Customize JSON collection name in Serializer

当访问 API 资源时 /api/users/ 其中 list/search 资源 Ember 数据期望响应采用以下格式:

{
  "users": [{
    "name": "Rails"
  }, {
    "name": "Omakase"
  }]
}

但我的回复是这样的:

{
  "results": [{
    "name": "Rails"
  }, {
    "name": "Omakase"
  }]
}

如何告诉我的序列化程序将结果转化为用户?

以下 Serialzer 重命名单个属性而不是整个列表,如上所示:

import DS from 'ember-data';

export default DS.ActiveModelSerializer.extend({
  attrs: {
    "users" : "results",
  }
});

这应该为您完成,不要更改属性,只需这两种方法来提取单个模型和模型数组。您获取 payload.results 属性 并进一步处理它,而不是默认的有效负载。

    extractArray: function(store, type, payload) {
        return Array.prototype.map.call(payload.results, function(hash) {
            return this.normalize(type, hash, payload.type);
        }, this);
    },

    extractSingle: function(store, type, payload, recordId) {
        return this.normalize(type, payload.results, payload.type);
    }