Ember.js 余烬数据:不使用标识映射和忽略关系的选项

Ember.js 余烬数据:不使用标识映射和忽略关系的选项,ember.js,ember-data,Ember.js,Ember Data,余烬数据的强大功能之一是,它使用身份映射来确保只有一个真实来源,但为了确保这一点,它对模型需要如何配置以及服务器需要返回什么进行了规定。但有时在一个只读的应用程序中,单一的真实来源是不必要的,更改服务器上的API比必要的工作更多。在这些情况下,是否有办法告诉Ember Data只接受数组或对象,而不尝试将其映射到标识映射?下面是一个使用小部件和类别的快速示例: 这是恩伯数据公司希望我们做的: App.Widget = DS.Model.extend({ name: DS.attr('st

余烬数据的强大功能之一是,它使用身份映射来确保只有一个真实来源,但为了确保这一点,它对模型需要如何配置以及服务器需要返回什么进行了规定。但有时在一个只读的应用程序中,单一的真实来源是不必要的,更改服务器上的API比必要的工作更多。在这些情况下,是否有办法告诉Ember Data只接受数组或对象,而不尝试将其映射到标识映射?下面是一个使用小部件和类别的快速示例:

这是恩伯数据公司希望我们做的:

App.Widget = DS.Model.extend({
    name: DS.attr('string'),
    categories: DS.hasMany('category')
});

App.Category = DS.Model.extend({
    name: DS.attr('string')
});
余烬数据希望我们从服务器返回:

{
    "widget": {
        "name":"Awesome Device!",
        "categories":[1,2]
    },
    "categories":[
        {id:1,"name":"Device"},
        {id:2,"name":"Fun"}
    ]
}
但是,如果这是一个只读应用程序,其中的类别不会改变,有没有办法告诉余烬数据将类别视为简单的值对象

App.Widget = DS.Model.extend({
    name: DS.attr('string'),
    categories: DS.attr('array') // any way to do something like this?
});
然后服务器可以简单地返回以下内容:

{
    "widget": {
        "name":"Awesome Device!",
        "categories": [
            { id: 1, "name": "Device" },
            { id: 2, "name": "Fun" }
        ]
    }
}

您可以创建自己的转换,一些常见的转换可能是原始转换或数组。当我懒惰时,我通常倾向于生食

App.RawTransform = DS.Transform.extend({
  deserialize: function(serialized) {
    return serialized;
  },
  serialize: function(deserialized) {
    return deserialized;
  }
});

App.register("transform:raw", App.RawTransform);

App.Widget = DS.Model.extend({
    name: DS.attr('string'),
    categories: DS.attr('raw')
});