0

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

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

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

4

1 回答 1

4

没有 ember-data 不会为您执行此操作,但应该可以实现。在这两种情况下,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 方法。在此 链接的底部,您可以找到更多相关信息。另请记住,它以驼峰形式查找它,因此您可能还需要规范化 json 对象。

于 2013-09-04T07:31:16.953 回答