我有一个Web服务返回这样的东西,其中有一个固定的信封,然后是一个json的主体,其模式依赖于“body_schema”。我希望能够使用余烬数据来管理这些,使用固定包络的第一类字段和身体字段的对象。这可能吗?我似乎在文档中看不到这样的内容,但我无法想象我是第一个遇到这个问题的人。
{"messages":
[
{"id":"5",
"from": "someone",
"to": "somebody",
"body_schema": "atype",
"body": {
{"url":"http://localhost:3030/blobs/511d63ddd0a6b5e863000001"}
}
}
]}
有什么想法吗?
答案 0 :(得分:1)
使用ember-data 1.0beta:
App.RawTransform = DS.Transform.extend({
deserialize: function(serialized) {
return serialized;
},
serialize: function(deserialized) {
return deserialized;
}
});
离。
App.Foo = DS.Model.extend({
bar: attr('raw'),
})
请参阅https://github.com/emberjs/data/blob/master/TRANSITION.md
答案 1 :(得分:0)
我解决了这个问题 - 您需要做的是将您自己的属性转换添加到现有的JSONTransforms集合中。我在app.js中定义了一个像这样的对象变换:
DS.JSONTransforms.object = {
deserialize: function(serialized) {
return Em.isNone(serialized) ? {} : serialized;
},
serialize: function(deserialized) {
return Em.isNone(deserialized) ? {} : deserialized;
}
};
有了这个,我可以定义一个这样的消息模型:
App.Message = DS.Model.extend({
timestamp: DS.attr('date'),
body: DS.attr('object'),
...
});