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

How to efficiently specify nested relationships in ember-data?

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

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

我会使用计算 属性 或绑定来获取您想要的东西 - 类似于

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

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

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

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