代码之家  ›  专栏  ›  技术社区  ›  Hedge

在序列化程序中自定义JSON集合名称

  •  0
  • Hedge  · 技术社区  · 9 年前

    访问API资源时,如 /api/users/ 该列表/搜索资源Ember Data期望响应为以下格式:

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

    但我的回答是这样的:

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

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

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

    import DS from 'ember-data';
    
    export default DS.ActiveModelSerializer.extend({
      attrs: {
        "users" : "results",
      }
    });
    
    1 回复  |  直到 9 年前
        1
  •  2
  •   ahmed.hoban    9 年前

    这应该对你有用,不要改变属性,只需要这两种方法来提取单个模型和模型数组。您使用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);
        }