如何有效地指定ember-data中的嵌套关​​系?

时间:2015-04-02 21:33:31

标签: ember.js ember-data emberfire

我有一个嵌套模型:

var School = DS.Model.extend({
    classrooms: DS.hasMany('classroom', {async: true})
});

var Classroom = DS.Model.extend({
    students: DS.hasMany('student', {async: true}),
    school: DS.belongsTo('school', {async: true})
});

var Student = DS.Model.extend({
    name: DS.attr('string'),
    classroom: DS.belongsTo('classroom', {async: true})
});

我使用firebase作为后端,我知道为了提高效率,建议对模式进行非规范化。显式指定关系是否有任何实用程序

var Student = DS.Model.extend({
    school: DS.belongsTo('school', {async: true});
});

代表Student模型,即使属于Student的每个Classroom和属于Classroom的每个School暗示了这一点?

2 个答案:

答案 0 :(得分:0)

我会使用计算属性或绑定来获取你想要的东西 - 比如

school: Ember.computed.alias('classroom.school')
schoolBinding: 'classroom.school'

它不会是DS.belongsTo因为数据实际上不包含学校属性

答案 1 :(得分:0)

没有。您不应该提供嵌套关系信息,除非可以从根对象直接访问相关模型(希望这是有意义的)。

唯一的好处"这样做是因为在您的情况下,student模型将在加载school数据时加载,而不是等到加载classroom数据。但是,这将提供一个不反映您的意图的数据结构,因此我不会提倡这样做。