1

我有一个这样的嵌套模型:

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属于 aClassroom和每个Classroom属于 a都暗示了这一点School

4

2 回答 2

0

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

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

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

于 2015-04-02T21:42:30.283 回答
0

不,您不需要提供嵌套关系信息,除非有问题的模型可以从根对象直接访问(希望这是有道理的)。

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

于 2015-04-02T21:42:49.137 回答