我正在使用Ember Data 1.0(测试版1),并且对ED中关联的默认行为感到有些困惑。
假设Book
模型中有许多(hasMany
)chapters
,每个chapter
属于(belongsTo
)一本书。我的期望是书的chapters
属性的实例会通过他们的belongsTo
关联自动引用书籍实例,但似乎并非如此。 这确实是Ember Data中的默认行为还是我忽略了什么?
如果这确实是默认行为,这是否意味着我需要创建一个自定义序列化程序来实现此目的?
答案 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对象。