无法使用“获取” Ember 3.2加载关系

时间:2018-07-08 10:25:38

标签: ember.js ember-data

我正在尝试加载一个我以前从未加载过的关系,但是似乎从来没有为此调用我的API。

我的设置是:

// routes/application.js
export default Route.extend({
    model() {
        return this.get('store').findRecord('post', 1, {include: 'user'});
    }
});

// routes/comments.js
export default Route.extend({
    model() {
        let post = this.modelFor('application');
        return post.get('user').get('actionHistory');
    }
});

用户actionHistory之前没有加载过,因此我希望服务器请求来获取它,但这从未实现。 user可用。

// models/user.js
export default DS.Model.extend({
    actionHistory: DS.hasMany('action-history'),
    ...
});

// models/action-history.js
export default DS.Model.extend({
    user: DS.belongsTo('user'),
    ...
});

我尝试过多种方法来确保已加载post.load('user.actionHistory')post.get('user').reload({ include: 'action-history'}),但没有任何效果。

我的设置或我尝试获取关系的方式有问题吗?

1 个答案:

答案 0 :(得分:1)

正如Gaurav在评论中所述ember-datas findRecord函数将返回一个需要首先解决的承诺。解决之后,您应该可以吸引用户。例如,以下代码将返回一个Promise作为您的模型,该模型将解析为用户的操作历史记录。

// routes/comments.js
export default Route.extend({
    model() {
        return this.modelFor('application').then(p => p.get('user.actionHistory'));
    }
});
  

请注意,注释控制器/模板将不会从模型挂钩中收到承诺,因为ember将等待其首先解决。