Ember数据:自动设置belongsTo关联

时间:2013-09-03 18:28:40

标签: ember.js ember-data

我正在使用Ember Data 1.0(测试版1),并且对ED中关联的默认行为感到有些困惑。

假设Book模型中有许多(hasManychapters,每个chapter属于(belongsTo)一本书。我的期望是书的chapters属性的实例会通过他们的belongsTo关联自动引用书籍实例,但似乎并非如此。 这确实是Ember Data中的默认行为还是我忽略了什么?

如果这确实是默认行为,这是否意味着我需要创建一个自定义序列化程序来实现此目的?

1 个答案:

答案 0 :(得分:4)

没有余烬数据不会为你做这件事,但应该可以实现。在这两种情况下,ember-data都会对这些属性进行侧载。 (在以前的版本中,您可以设置映射,以便嵌入这些映射,但您不再可以执行此操作)在您的示例中,您将拥有以下内容:

 App.Book = DS.Model.extend({
     chapters: DS.hasMany('Chapter')
 });

 App.Chapter= DS.Model.extend({
     book: DS.belongsTo('Book')
 });

一旦设置了这些,默认情况下,ember-data会查找如下结构的数据:

{
    "book": {
        "id": "1"
        "chapters": ["1", "2", "3"]
    },

    "chapters": [
        {
            "id": "1",
            "book": "1"
        }, 
        {
            "id": "2",
            "book": "1"
        }, 
        {
            "id": "3",
            "book": "1"
        }
    ]
}

如果您的数据不是那种格式且无法更改,那么您可以在该类型的序列化程序上扩展extractSingle或extractArray方法。在link的底部,您可以找到更多相关信息。还记得它在camelcase中查找它,所以你可能还需要规范化json对象。