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