ember数据模型中的json子文档

时间:2013-02-20 05:36:56

标签: ember.js ember-data

我有一个Web服务返回这样的东西,其中有一个固定的信封,然后是一个json的主体,其模式依赖于“body_schema”。我希望能够使用余烬数据来管理这些,使用固定包络的第一类字段和身体字段的对象。这可能吗?我似乎在文档中看不到这样的内容,但我无法想象我是第一个遇到这个问题的人。

{"messages":
[
  {"id":"5",
   "from": "someone",
   "to": "somebody",
   "body_schema": "atype", 
   "body": {
     {"url":"http://localhost:3030/blobs/511d63ddd0a6b5e863000001"}
   }
  }
]}

有什么想法吗?

2 个答案:

答案 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'),
  ...
});